上下文操作栏与工具栏操作混淆
Posted
技术标签:
【中文标题】上下文操作栏与工具栏操作混淆【英文标题】:Contextual Action Bar messing with Toolbar actions 【发布时间】:2015-07-22 11:32:38 【问题描述】:我正在使用 appcompat v7 和支持设计库。在我的活动中,有一个常规工具栏,其中包含三个操作按钮(RM1、RM2、RM3):
_____________________________________
RM1 RM2 RM3 |
_____________________________________|
当长按列表中的某些项目时,会显示上下文操作栏 (CAB),而不是常规工具栏。我的 CAB 有一个单一操作 (CM)。
_____________________________________
CM |
_____________________________________|
当上下文操作栏 (CAB) 被激活时,它会隐藏常规工具栏。此时,如果我单击上下文菜单 (CM),一切正常。但是由于某种原因,如果我单击 CM 左侧的空白区域,则会显示常规菜单 RM1 和 RM2,尽管 CAB 隐藏了常规工具栏。当 CAB 处于活动状态时,RM1 和 RM2 图标显然不会显示,但点击处理程序仍然存在,即使常规工具栏被隐藏,它们也会被触发。 CAB 不会拦截点击,除非它在点击点有动作。如果我单击 CM,则处理正确:RM 未显示,因为该按钮正好位于 CM 菜单下方。
这是一个错误吗?有什么解决方法吗?
在 android 4.1 设备中测试。
【问题讨论】:
【参考方案1】:我认为这是一个错误。我自己也遇到过,isolated it。这是一个解决方法,假设您正在扩展 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);
【讨论】:
不幸的是,这是唯一对我有用的解决方案。以上是关于上下文操作栏与工具栏操作混淆的主要内容,如果未能解决你的问题,请参考以下文章