Android 在导航抽屉打开时隐藏上下文操作栏

Android 在导航抽屉打开时隐藏上下文操作栏,android,navigation-drawer,contextual-action-bar,Android,Navigation Drawer,Contextual Action Bar,这个问题与类似,只是我不想使用视图寻呼机(VP),而是想使用导航抽屉(ND)。我有一个元素列表,当通过长按操作选择一个/多个项目时,它会激活上下文操作栏(CAB)。当ND打开时,我想暂时隐藏驾驶室并显示基本操作栏,而当ND关闭时,再次显示带有所选项目的驾驶室 该功能在ND官方“抽屉可见时隐藏上下文操作栏”中指定。到目前为止,我找不到任何地方如何以一种好的方式制作,但我尝试了一种解决方法: ND打开时完成CAB并保存所选项目(如果有) 抽屉关闭时,启动启用CAB的操作模式,并从保存的列表中填充所

这个问题与类似,只是我不想使用视图寻呼机(VP),而是想使用导航抽屉(ND)。我有一个元素列表,当通过长按操作选择一个/多个项目时,它会激活上下文操作栏(CAB)。当ND打开时,我想暂时隐藏驾驶室并显示基本操作栏,而当ND关闭时,再次显示带有所选项目的驾驶室

该功能在ND官方“抽屉可见时隐藏上下文操作栏”中指定。到目前为止,我找不到任何地方如何以一种好的方式制作,但我尝试了一种解决方法:

  • ND打开时完成CAB并保存所选项目(如果有)
  • 抽屉关闭时,启动启用CAB的操作模式,并从保存的列表中填充所选项目的列表
我正在尝试实现的一个例子就是Gmail应用程序


提前感谢您的回答

为了达到这个要求,我从ActionBarDrawerToggle回调方法调用这两个方法:

public void onDrawerOpened() {
  if (mActionMode != null) {
    mCheckedListItems = mListView.getCheckedItemPositions().clone();
    mActionMode.finish();
  }
}
public void onDrawerClosed() {
  if (mCheckedListItems!=null) {
    for (int i=0; i<mCheckedListItems.size(); i++) {
      if (mCheckedListItems.valueAt(i)) {
        mListView.setItemChecked(mCheckedListItems.keyAt(i), true);
      }
    }
  }
  mCheckedListItems = null;
}
public void onDrawerOpened(){
if(mActionMode!=null){
mCheckedListItems=mListView.getCheckedItemPositions().clone();
mActionMode.finish();
}
}
公共无效或已关闭(){
if(mCheckedListItems!=null){

对于(inti=0;i库)(披露:我是开发人员)在扩展和时自动执行此操作。除后者外,还可以在中扩展和提供您的
AblistView
。当导航抽屉打开时,
操作模式将隐藏。当关闭时,操作模式将恢复。

如果您使用的是材质设计样式的导航dra嗯,被接受的解决方案看起来并不那么好,因为
ActionMode
一直放在抽屉的顶部,直到它完全打开

另一种方法是使用
onDrawerStateChanged
,然后一旦开始拖动抽屉,它将隐藏
操作模式

@Override
public void onDrawerStateChanged(int newState) {
    super.onDrawerStateChanged(newState);
    mActionMode.finish();
}

我的方法与此类似,但您也保留了一份已检查项目的列表。我认为没有此解决方法可能会有更自然的方法。无论如何,谢谢。不过我会等待其他意见,然后再接受您的答复。