可以通过使用DrawerLayout和NavigationView来实现需要具备全屏宽度的侧滑菜单效果。在布局文件中添加DrawerLayout作为根布局,将NavigationView作为其子布局,将其他布局作为其主要布局。在MainActivity.java中设置DrawerLayout以及NavigationView并在相应情况下控制它们的展开与收起。
代码示例:
XML布局文件:
Java代码:
private DrawerLayout mDrawerLayout; private NavigationView mNavigationView;
//在onCreate方法中进行初始化操作 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
//绑定对应的布局文件
setContentView(R.layout.activity_main);
//获取DrawerLayout和NavigationView
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mNavigationView = (NavigationView) findViewById(R.id.nav_view);
//设置点击汉堡包图标展开或关闭侧边菜单
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
mDrawerLayout.addDrawerListener(toggle);
toggle.syncState();
//设置侧滑菜单的监听器
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// 在此添加对菜单项的点击响应操作
//…
//关闭导航栏
mDrawerLayout.closeDrawer(GravityCompat.START);
return true;
}
});
}
// 在MainActivity中覆盖onBackPressed方法,以便在返回按钮被单击时先关闭导航栏而不是直接退出应用程序 public void onBackPressed() { if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) { mDrawerLayout.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } }