tom*_*ozb 29 android material-design android-toolbar
Toolbar使用汉堡包实现背箭头动画非常容易.在我看来这个动画是没有意义的,因为根据材料设计规格导航抽屉覆盖了Toolbar打开时.我的问题是如何正确禁用此动画并显示汉堡包或后退箭头使用getSupportActionBar().setDisplayHomeAsUpEnabled(true);
这就是我做的方式,但它看起来像一个肮脏的黑客:
mDrawerToggle.setDrawerIndicatorEnabled(false);
if (showHomeAsUp) {
mDrawerToggle.setHomeAsUpIndicator(R.drawable.lib_ic_arrow_back_light);
mDrawerToggle.setToolbarNavigationClickListener(view -> finish());
} else {
mDrawerToggle.setHomeAsUpIndicator(R.drawable.lib_ic_menu_light);
mDrawerToggle.setToolbarNavigationClickListener(view -> toggleDrawer());
}
Run Code Online (Sandbox Code Playgroud)
如何才能正确实施这一点,setDisplayHomeAsUpEnabled以便在汉堡包和后箭头图标之间切换?
Fra*_*ank 48
这将禁用动画,在创建drawerToggle时,覆盖onDrawerSlide():
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
getToolbar(), R.string.open, R.string.close) {
@Override
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
}
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, 0); // this disables the animation
}
};
Run Code Online (Sandbox Code Playgroud)
如果要完全删除箭头,可以添加
super.onDrawerSlide(drawerView, 0); // this disables the arrow @ completed state
Run Code Online (Sandbox Code Playgroud)
在onDrawerOpened函数的末尾.
adn*_*eal 12
在我看来这个动画毫无意义
嗯,ActionBarDrawerToggle意思是动画.
您可以通过在ActionBar主题中定义drawerArrowStyle来自定义动画切换.
任何线索如何正确实现只使用setDisplayHomeAsUpEnabled在汉堡包和后箭头图标之间切换?
这ActionBarDrawerToggle只是一种奇特的召唤方式ActionBar.setHomeAsUpIndicator.所以,你会无论哪种方式有打电话ActionBar.setDisplayHomeAsUpEnabled来true,以显示它.
如果你确信你必须使用它,那么我建议分别打电话ActionBarDrawerToggle.onDrawerOpened(View drawerView)和ActionBarDrawerToggle.onDrawerClosed(View drawerView).
这将把DrawerIndicator位置设置为1或0在箭头和汉堡包状态之间切换DrawerArrowDrawable.
在你的情况下,甚至没有必要附加ActionBarDrawerToggle一个DrawerLayout.DrawerListener.如:
mYourDrawer.setDrawerListener(mYourDrawerToggle);
Run Code Online (Sandbox Code Playgroud)
但更有前瞻性的方法是拨打ActionBar.setHomeAsUpIndicator一次并使用自己的汉堡图标,你也可以通过一种风格来做.然后,当您想要显示后退箭头时,只需调用ActionBar.setDisplayHomeAsUpEnabled并让AppCompat或框架处理其余部分.根据你的评论,我很确定这就是你要找的东西.
如果你不能确定要使用的图标,默认DrawerArrowDrawable大小是24dp的,这意味着你要抢的ic_menu_white_24dp还是ic_menu_black_24dp从设置导航图标在谷歌官方的材料设计图标包.
您也可以将其复制DrawerArrowDrawable到项目中,然后根据需要切换箭头或汉堡状态.它是自包含的,减去一些资源.
禁用方法中的超级调用onDrawerSlide()将停止 Arrow 和 Burger 之间的动画。仅当抽屉完全打开或完全关闭时,您才会看到切换(无动画)。
mActionBarDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.open, R.string.closed) {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
//super.onDrawerSlide(drawerView, slideOffset);
}
};
mDrawerLayout.setDrawerListener(mActionBarDrawerToggle);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18989 次 |
| 最近记录: |