В соответствии с спецификациями Material Design ширина навигационного ящика на мобильных устройствах должна быть
side nav width = ширина экрана - высота строки приложения
Как это реализовать на android?
У меня есть два частичных решения. Во-первых, это хакерский способ: в содержательной деятельности я помещаю этот код:
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB_MR1) {
final Display display = getWindowManager().getDefaultDisplay();
final Point size = new Point();
display.getSize(size);
final ViewGroup.LayoutParams params = mDrawerFragment.getView().getLayoutParams();
params.width = size.x - getResources().getDimensionPixelSize(
R.dimen.abc_action_bar_default_height_material
);
mFragmentUserList.getView().setLayoutParams(params);
}
Это, однако, вызывает второй цикл компоновки и не работает в пряниках: это не оптимально.
Второе решение включает в себя добавление пробела между фрагментом и drawerLayout. Однако он смещает тень и место, где пользователь может нажать, чтобы вернуться в основное приложение. Он также падает, когда нажимается значок "hamburguer". Не оптимально.
Есть ли лучшее решение, желательно одно, которое включает стили и xml?