And*_*kov 13 android android-ui android-actionbar-compat android-5.0-lollipop android-toolbar
我有一个活动,包含许多片段,使用操作栏和导航抽屉.它启用了"home as up".我已经实现了正确的逻辑,只有顶级片段显示动作栏抽屉切换图标,其他片段显示箭头.我通过以下方式实现了
mDrawerToggle.setDrawerIndicatorEnabled(false);
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mDrawerList);
Run Code Online (Sandbox Code Playgroud)
现在旧的v4支持库ActionBarDrawerToggle已被弃用.我已经和new一起切换到v7版本Toolbar以获得Material Design外观.在抽屉打开之后"向上"箭头被正确显示,但是当执行上述代码时它完全消失.
这是支持库中的错误还是我必须做一些不同的事情来显示"向上"箭头而不是抽屉指示器?
小智 18
Nikola Despotoski和Andrey Novikov的回答/评论是完全正确的,但我想提一下工具栏被以下代码替换后:
drawerToggle.setDrawerIndicatorEnabled(false);
drawerToggle.setHomeAsUpIndicator(getV7DrawerToggleDelegate().getThemeUpIndicator());
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
您的活动将收到每个onOptionsItemsSelected事件,即使您再次启用抽屉toogle drawerToggle.setDrawerIndicatorEnabled(true); 所以你需要处理这个问题,我已经结束了
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (drawerToggle.isDrawerIndicatorEnabled()) {
return drawerToggle.onOptionsItemSelected(item);
} else {
onBackPressed();
return true;
}
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
Nik*_*ski 10
您是否尝试使用主题指示器getV7DrawerToggleDelegate().getThemeUpIndicator ()并在禁用指示器后进行设置?
因为当禁用指标时ActionBarDrawerToggle尝试设置上一个指标.
来自ActionBarDrawerToggle:
public void setDrawerIndicatorEnabled(boolean enable) {
if (enable != mDrawerIndicatorEnabled) {
if (enable) {
setActionBarUpIndicator((Drawable) mSlider,
mDrawerLayout.isDrawerOpen(GravityCompat.START) ?
mCloseDrawerContentDescRes : mOpenDrawerContentDescRes);
} else {
setActionBarUpIndicator(mHomeAsUpIndicator, 0);
}
mDrawerIndicatorEnabled = enable;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
至于弃用ActionBarActivity,你应该使用getDrawerToggleDelegate().getThemeUpIndicator ()
| 归档时间: |
|
| 查看次数: |
8891 次 |
| 最近记录: |