对于新的NavigationView,是否仍然推荐使用ActionBarDrawerToggle,或者这不是“材料设计”?例如,以前我们应该在抽屉打开时隐藏动作栏项目,但现在指南说它们应该留下来。
发布于 2015-06-03 14:12:33
使用新NavigationView的
是否仍建议使用
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);
}你需要提供你自己的“汉堡包”可抽屉(在我的例子中是R.drawable.ic_menu)。除此之外,上面的代码就是打开抽屉所需的全部代码。onOptionsItemSelected()中的android.R.id.home箱代表您的汉堡包抽屉按钮。它指向一个内置的资源id (,而不是您添加到menu中的),并且它是自动处理的。
除此之外,您还必须通过向单击监听器添加closeDrawers()来实现抽屉的关闭,如下所示:
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
// Handle menu item clicks here.
drawerLayout.closeDrawers();
return true;
}
});closeDrawers()是DrawerLayout的一种方法,它负责处理所有事情。就这样。这就是您现在正确处理导航抽屉所需的全部代码。再也没有乱七八糟的汉堡包代码了!
当然,如果您真的想这样做,您仍然可以通过旧方法在ActionBarDrawerToggle中使用NavigationView。但你当然不需要这么做。
如果您想要抽屉回调,则为
尽管打开/关闭抽屉不需要ActionBarDrawerToggle,但它对于处理额外的回调可能仍然有用(特别是如果您已经在使用ActionBar )。否则,您可以使用DrawerLayout.DrawerListener或DrawerLayout.SimpleDrawerListener()实现自己的事件,以处理其他打开/关闭相关事件。
发布于 2015-06-02 02:29:25
使用新NavigationView的
是否仍建议使用
ActionBarDrawerToggle
是。这两者解决了导航抽屉的两个完全不同的方面。
总而言之,导航抽屉通常有三个组件:
DrawerLayout
的方法
DrawerLayout是包含导航抽屉内容和应用程序内容的布局。它允许您从侧面拉起抽屉,并将抽屉显示在应用程序的内容之上(DrawerLayout的第一个子项)。
导航抽屉内容(DrawerLayout的第二个子项)通常是用户可以单击的项目列表。以前,我见过的大多数实现都使用了ListView或RecyclerView,也许还使用了某种类型的头。NavigationView是对此的替代,用于提供与材料兼容的抽屉内容。
ActionBarDrawerToggle用于在应用程序栏中提供汉堡包图标。它允许用户点击图标来打开或关闭您的抽屉。
发布于 2015-06-25 23:33:32
完成其他答案,导航视图应该适合整个屏幕的高度,以便它将隐藏汉堡包图标时打开。正因为如此,从汉堡到箭头的动画甚至只显示箭头都是没有必要的。
但是当点击当前屏幕时,它会转到另一个片段,想象一个照片图库,点击一张照片将显示它更大,应该有一个从汉堡到箭头的动画,箭头应该留下来,当按下时,应该有一个反向动画到汉堡,以便导航视图可以再次打开。
您仍然可以使用ActionBarDrawerToggle实现这一点,甚至可以使用导航视图,因为它使用与以前相同的DrawerLayout。所以它仍然有用处,但当然不是必要的。
https://stackoverflow.com/questions/30580478
复制相似问题