Toolbar 仍然可以在 Contextual ActionBar 中进行交互

Toolbar can still be interacted with in Contextual ActionBar

上下文 ActionBar 没有与工具栏集成,就像它与 ActionBar 集成一样。它会出现在工具栏上方。这可以通过放置

来解决
`<item `name="windowActionModeOverlay">true</item>` 

里面styles.xml

问题是,虽然 CAB 现在覆盖了工具栏,但仅此而已。这意味着,在操作模式下我仍然可以与工具栏交互。

我在下面附上了问题的图片。在这里您可以看到,当我按下工具栏上微调器所在的区域时,工具栏上的微调器仍然出现。

有办法解决这个问题吗?

你应该使用 android:dropDownVerticalOffset="60dp"

<Spinner
    android:id="@+id/toolbar_spinner"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:dropDownVerticalOffset="60dp"
    android:dropDownWidth="match_parent"
    android:spinnerMode="dropdown" />

解决方案

首次创建动作模式时隐藏工具栏。不要设置 View.GONE,因为这将删除工具栏的 space。而是用户 View.INVISIBLE。这将保留工具栏 space.

@Override
    public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
        getActivity().getMenuInflater().inflate(R.menu.contextual_action_bar, menu);
        toolbar.setVisibility(View.INVISIBLE);

        return true;
    }

当操作模式被销毁时使工具栏可见。

@Override
    public void onDestroyActionMode(ActionMode mode) {
        this.mActionMode = null;
        toolbar.setVisibility(View.VISIBLE);
    }