基于从Navigation
Drawer模板生成的代码,可以通过将代码添加到NavigationDrawerFragment中的onCreateView()方法来更改面板的宽度。
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); } });要在DrawerLayout上禁用平移手势:
// NavigationDrawerFragment
public void setUp(int fragmentId, DrawerLayout drawerLayout) { mDrawerLayout = drawerLayout; mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);}要打开/关闭DrawerLayout:
mDrawerLayout.openDrawer(mDrawerListView);mDrawerLayout.closeDrawer(mDrawerListView);
为防止抽屉面板的图标消失,请按如下所示更改setOnItemClickListener方法:
mDrawerListView.setonItemClickListener(new AdapterView.onItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selectItem(position); }});并修改重写的onDrawerClose方法,如下所示:
@Overridepublic 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(); // calls onPrepareOptionsMenu()}


