android – NavigationView和ActionBarDrawerToggle

前端之家收集整理的这篇文章主要介绍了android – NavigationView和ActionBarDrawerToggle前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用新的NavigationView仍然建议使用ActionBarDrawerToggle或者这不是“材质设计”?例如,以前我们应该在抽屉开放时隐藏动作栏项目,但是现在的指导方针说他们应该留下来.

解决方法

With the new NavigationView is it still recommended to use ActionBarDrawerToggle

不,这不是必需的.

如果您查看新设计库的“官方”demo code,则不再使用ActionBarDrawerToggle,因为新的NavigationView和AppCompatActivity不需要它.

使用新的v22支持库,您可以删除所有的ActionBarDrawerToggle代码,只需使用以下操作来处理NavigationDrawer与ActionBar / ToolBar汉堡包图标之间的交互:

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    final ActionBar actionBar = getSupportActionBar();
    actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);
    actionBar.setDisplayHomeAsUpEnabled(true);
    ...
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            mDrawerLayout.openDrawer(GravityCompat.START);
            return true;
        ....
    }
    return super.onOptionsItemSelected(item);
}

您将需要提供自己的“汉堡包”drawable(在我的例子中为R.drawable.ic_menu).此外,上述代码是处理抽屉开启所需的所有代码. onOptionsItemSelected()中的android.R.id.home案例表示您的汉堡包抽屉按钮.它指向一个内置的资源ID(不是您添加菜单xml的东西),它会自动处理.

此外,您必须通过简单地向您的点击监听器添加closeDrawers()来实现关闭抽屉,如下所示:

navigationView.setNavigationItemSelectedListener(
    new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(MenuItem menuItem) {
            // Handle menu item clicks here.
            drawerLayout.closeDrawers();
            return true;
        }
    });

closeDrawers()是DrawerLayout的一种方法,并且处理所有内容.而已.这就是您真正需要正确处理导航抽屉的代码.没有更多凌乱的代码来翻转汉堡包等!

当然,如果你真的想,你仍然可以使用NavigationView与ActionBarDrawerToggle的旧方法.但你当然不必.

如果你想要抽屉回调

即使ActionBarDrawerToggle不需要打开/关闭抽屉,它可能仍然有助于处理额外的回调(特别是如果您已经使用ActionBar).否则,您可以使用DrawerLayout.DrawerListener或使用DrawerLayout.SimpleDrawerListener()来实现自己的,来处理其他打开/关闭相关事件.

猜你在找的Android相关文章