Based on the code generated in the navigation box template, you can change the width of the panel by adding this code to the onCreateView () method in the NavigationDrawerFragment file.
mDrawerListView.post(new Runnable() { @Override public void run() { Resources resources = getResources(); float width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, resources.getDisplayMetrics()); DrawerLayout.LayoutParams params = (DrawerLayout.LayoutParams) mDrawerListView.getLayoutParams(); params.width = (int) (width); mDrawerListView.setLayoutParams(params); } });
To disable gestures on DrawerLayout:
// NavigationDrawerFragment
public void setUp(int fragmentId, DrawerLayout drawerLayout) { mDrawerLayout = drawerLayout; mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); }
To open / close DrawerLayout:
mDrawerLayout.openDrawer(mDrawerListView); mDrawerLayout.closeDrawer(mDrawerListView);
To prevent the drawer panel icon from disappearing, change the setOnItemClickListener method as follows:
mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selectItem(position); } });
And change the overridden onDrawerClose method as follows:
@Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); if (!isAdded()) { return; } mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); Resources resources = getResources(); float width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 240, resources.getDisplayMetrics()); DrawerLayout.LayoutParams params = (DrawerLayout.LayoutParams) mDrawerListView.getLayoutParams(); params.width = (int) (width); mDrawerListView.setLayoutParams(params); getActivity().invalidateOptionsMenu();
source share