【问题标题】: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 设备中测试。

【问题讨论】:

    标签: android android-appcompat android-toolbar contextual-action-bar


    【解决方案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);
    }
    

    【讨论】:

    • 不幸的是,这是唯一对我有用的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多