我不确定这是否是错误或不正确使用新的工具栏类。

我能够直接使用可用的主题之一成功为ActionBar设置主题。这也使我可以将ActionMode设置为主题。一切都按预期完成。这就是我的做法。

<style name="Theme.ActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="actionModeBackground">@drawable/action_mode_background</item>
</style>

现在,我正在寻找更多的灵活性,因此我尝试使用支持库中的新工具栏。完善工具栏的实现,使其工作正常,但是,现在操作模式不再按预期工作。自定义背景无法正常工作,并且操作模式栏正在向下推工具栏。

为了解决下推问题,我使用了标记windowActionModeOverlay
<style name="Theme.ActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowActionModeOverlay">true</item>
        <item name="actionModeBackground">@drawable/action_mode_background</item>
</style>

在我的 Activity 中,执行以下操作以使我的工具栏成为默认的ActionBar。
Toolbar toolbar = (Toolbar) findViewById(R.id.toolBar);
setSupportActionBar(toolbar);

现在,我已经尝试了很多事情。我什至尝试深入研究源代码来弄清楚发生了什么。

任何想法为什么会这样?如何设置ActionMode的样式?或更具体地说,如何更改ActionMode的背景?

更新1
我注意到,当将<item name="windowActionBar">false</item>添加到我的 Activity 主题中时, Action 模式会放宽其主题,而不是将其设置为true。显然,将其设置为true会包括窗口操作栏。

更新2
我能够使用几个mod正确设置主题的 Action 模式。
  • Action 模式背景。原来,您只是直接在ActionMode主题上将背景设置为android:background!另外,您还需要在主题上指定文本。
    <item name="actionModeStyle">@style/Widget.ActionMode</item>`
    <style name="Widget.ActionMode" parent="@style/Widget.AppCompat.ActionMode">
        <item name="android:background">@drawable/action_mode_background</item>
        <item name="titleTextStyle">@style/TitleTextStyle</item>
    </style>
    
  • 后退箭头未设置样式。我重写了所使用的可绘制对象,并以白色添加了自己的对象。
    <item name="actionModeCloseDrawable">@drawable/ic_arrow_back_white_24dp</item>`
    
  • 最佳答案

    好了,我从支持库中挖掘了一些样式,主题,属性和代码后,终于能够正确设置 Action 模式的样式。

    在提供我的问题的解决方案之前,我必须提到支持库似乎存在错误。隐藏窗口 Action 栏时,似乎失去了 Action 模式的设置主题。我已经报告了bug,以查看他们是否解决了此问题或提供了更多详细信息。

    因此,解决方案是本质上为我自己设置背景,文本和关闭图标的样式。为此,请使用我自己的ActionMode样式,并将属性指针更改为关闭图标。

    themes.xml

    <style name="Theme.Main.Home">
         <item name="windowActionModeOverlay">true</item>
         <item name="actionModeStyle">@style/Widget.ActionMode</item>
         <item name="actionModeCloseDrawable">@drawable/ic_arrow_back_white_24dp</item>
    </style>
    

    styles.xml
    <style name="Widget.ActionMode" parent="@style/Widget.AppCompat.ActionMode">
        <item name="android:background">@drawable/action_mode_background</item>
        <item name="titleTextStyle">@style/TitleTextStyle</item>
    </style>
    
  • 背景
    这很棘手,因为actionModeBackground不能用于设置操作模式的背景。您必须通过ActionMode样式上的标准android:background更改背景。
  • 标题文本
    只需为titleTextStyle提供通用样式即可更改文本颜色。
  • 关闭图标
    下载了 Material 图标,并使用actionModeCloseDrawable attr添加了关闭图标。
  • 09-27 12:38
    查看更多