Android “多选择”处于活动状态时不使用AppCompat工具栏弹出菜单

Android “多选择”处于活动状态时不使用AppCompat工具栏弹出菜单,android,android-layout,android-appcompat,android-toolbar,Android,Android Layout,Android Appcompat,Android Toolbar,在styles.xml中,我正在设置工具栏中溢出菜单的弹出主题的样式: <style name="ToolbarOverflowMenuStyle" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:backgroundTint">@color/white</item> </style> <style name="PostToolbarStyle" par

在styles.xml中,我正在设置工具栏中溢出菜单的弹出主题的样式:

<style name="ToolbarOverflowMenuStyle" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:backgroundTint">@color/white</item>
</style>
<style name="PostToolbarStyle" parent="android:Theme.Material">
    <item name="android:backgroundTint">@color/yellow</item>
    <item name="android:textColorHint">@color/lightGray2</item>
    <item name="android:textColorPrimary">@color/defaultTextColor</item>
    <item name="android:textColorSecondary">@color/defaultTextColor</item>
</style>

@颜色/白色
这可以按预期工作,但如果我在回收器视图(列表)中进行多重选择,弹出主题背景颜色将从白色变为黄色(工具栏的颜色)。我不知道为什么会这样,因为如果多重选择未激活,它的颜色是正确的

你知道我做错了什么吗

工具栏的样式:

<style name="ToolbarOverflowMenuStyle" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:backgroundTint">@color/white</item>
</style>
<style name="PostToolbarStyle" parent="android:Theme.Material">
    <item name="android:backgroundTint">@color/yellow</item>
    <item name="android:textColorHint">@color/lightGray2</item>
    <item name="android:textColorPrimary">@color/defaultTextColor</item>
    <item name="android:textColorSecondary">@color/defaultTextColor</item>
</style>

@颜色/黄色
@颜色/浅灰色2
@颜色/默认文本颜色
@颜色/默认文本颜色
这是我在布局xml文件中设置工具栏的方式:

<android.support.v7.widget.Toolbar
    android:id="@+id/app_toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"
    android:elevation="4dp"
    android:minHeight="?attr/actionBarSize"
    android:paddingTop="@dimen/tool_bar_top_padding"
    app:popupTheme="@style/ToolbarOverflowMenuStyle"
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar"/>

当多选未激活时弹出主题的外观(正确):

以下是multi-select激活时的显示方式(错误):

能否尝试使用此属性selectableItemBackground编辑样式

  <style name="ToolbarOverflowMenuStyle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:backgroundTint">@color/white</item>
<item name="selectableItemBackground">?android:selectableItemBackground</item></style>

@颜色/白色
?android:selectableItemBackground
SwitchCompat也有类似的问题,解决方案就在其中一个属性本身。这个博客也帮了很多忙

Its-
ActionMode
您可以看到默认的
选项菜单
弹出式背景是白色,而应用程序的默认上下文菜单在您的案例中是黄色。当您进入多重选择时,将触发操作模式来处理项目单击和您拥有的内容,因为您知道CAB是如何工作的

如果要在
setMultichoiceModelListener
override
onPrepareActionMode(操作模式,菜单菜单)
中保持相同的白色背景,请使用
getCustomView().setBackgroundColor(Color.white)

编辑:处理评论

这就是我在您的
onPrePareActionMode()中的意思


希望它有帮助

可能离题:不要在主题中使用
background
backgroundTint
,因为它们将应用于小部件的每个子项(每个项而不是全部背景)。定义
popupBackground
colorBackground
。感谢您的提示。我已将这些更改应用到该应用程序。谢谢您的提示。不幸的是,这对弹出菜单工具栏的颜色没有任何影响。弹出式工具栏(多选激活时)似乎使用了与常规工具栏样式相同的样式设置。感谢您的提示。我试图应用它,但还没有成功。我有
code
私有类ItemMultiSelectorCallback实现ActionMode。回调{@Override public boolean onPrepareActionMode(ActionMode ActionMode,菜单){
code
抱歉,我不得不添加另一条注释,因为我只能编辑一条注释5分钟:谢谢你的提示。我试图应用它,但还没有成功。我有以下代码:
code
private class ItemMultiSelectorCallback实现ActionMode。回调{@Override public boolean onPrepareActionMode(ActionMode ActionMode,Menu Menu){MenuItem moveMenuItem=Menu.findItem(R.id.action\u move\u multi\u documents);moveMenuItem.setVisible(!isFolderSelection&!isDraftFolder);return true;}
code
不能在其中任何地方使用getCustomView()方法。有什么想法吗?