上下文操作栏与工具栏操作混淆
Contextual Action Bar messing with Toolbar actions
我正在使用 appcompat v7 和支持设计库。在我的 activity 中有一个常规工具栏,它有三个操作按钮(RM1、RM2、RM3):
_____________________________________
RM1 RM2 RM3 |
_____________________________________|
当长按列表中的某些项目时,会显示上下文操作栏 (CAB) 而不是常规工具栏。我的 CAB 有一个动作 (CM)。
_____________________________________
CM |
_____________________________________|
激活上下文操作栏 (CAB) 后,它会隐藏常规工具栏。此时,如果我单击上下文菜单 (CM),一切正常。但出于某种原因,如果我单击 CM 左侧的空白 space,则会显示常规菜单 RM1 和 RM2,尽管常规工具栏已被 CAB 隐藏。当 CAB 处于活动状态时,RM1 和 RM2 图标显然不会显示,但点击处理程序仍然存在,即使常规工具栏被隐藏,它们也会被触发。 CAB 不会拦截点击,除非它在点击的点有一个动作。如果我点击 CM,它会被正确处理:RM 没有显示,因为那个按钮正好在 CM 菜单下面。
这是一个错误吗?任何解决方法?
在 Android 4.1 设备中测试。
我认为这是一个错误。我自己有 运行,isolated it. Here is a workaround, assuming you are extending AppCompatActivity:
@Override
public void onSupportActionModeStarted(ActionMode mode) {
super.onSupportActionModeStarted(mode);
rm1.setEnabled(false);
rm2.setEnabled(false);
rm3.setEnabled(false);
}
@Override
public void onSupportActionModeFinished(ActionMode mode) {
super.onSupportActionModeFinished(mode);
rm1.setEnabled(true);
rm2.setEnabled(true);
rm3.setEnabled(true);
}
我正在使用 appcompat v7 和支持设计库。在我的 activity 中有一个常规工具栏,它有三个操作按钮(RM1、RM2、RM3):
_____________________________________
RM1 RM2 RM3 |
_____________________________________|
当长按列表中的某些项目时,会显示上下文操作栏 (CAB) 而不是常规工具栏。我的 CAB 有一个动作 (CM)。
_____________________________________
CM |
_____________________________________|
激活上下文操作栏 (CAB) 后,它会隐藏常规工具栏。此时,如果我单击上下文菜单 (CM),一切正常。但出于某种原因,如果我单击 CM 左侧的空白 space,则会显示常规菜单 RM1 和 RM2,尽管常规工具栏已被 CAB 隐藏。当 CAB 处于活动状态时,RM1 和 RM2 图标显然不会显示,但点击处理程序仍然存在,即使常规工具栏被隐藏,它们也会被触发。 CAB 不会拦截点击,除非它在点击的点有一个动作。如果我点击 CM,它会被正确处理:RM 没有显示,因为那个按钮正好在 CM 菜单下面。
这是一个错误吗?任何解决方法?
在 Android 4.1 设备中测试。
我认为这是一个错误。我自己有 运行,isolated it. Here is a workaround, assuming you are extending AppCompatActivity:
@Override
public void onSupportActionModeStarted(ActionMode mode) {
super.onSupportActionModeStarted(mode);
rm1.setEnabled(false);
rm2.setEnabled(false);
rm3.setEnabled(false);
}
@Override
public void onSupportActionModeFinished(ActionMode mode) {
super.onSupportActionModeFinished(mode);
rm1.setEnabled(true);
rm2.setEnabled(true);
rm3.setEnabled(true);
}