使用工具栏时无法设置动作模式

Jon*_*ona 13 android android-support-library material-design

我不确定这是一个错误还是某种程度上我没有正确使用新的Toolbar类.

我能够使用一个可用的主题直接成功主题ActionBar.这也允许我主题ActionMode.一切都按预期完美.我就是这样做的.

<style name="Theme.ActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="actionModeBackground">@drawable/action_mode_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找更多的灵活性,所以我试图使用支持库中的新工具栏.完善工具栏并且工作正常,但是,现在操作模式不再按预期工作.自定义背景不起作用,操作模式栏正在按下工具栏.

为了解决推下问题我使用了标志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>
Run Code Online (Sandbox Code Playgroud)

在我的活动中,我执行以下操作以使我的工具栏成为默认的ActionBar.

Toolbar toolbar = (Toolbar) findViewById(R.id.toolBar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)

现在我尝试了很多东西.我甚至尝试潜入源头来弄清楚发生了什么.

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


更新1
我注意到,当添加<item name="windowActionBar">false</item>到我的活动主题时,操作模式会丢失其主题而不是将其设置为true.显然将其设置为true它将包括窗口操作栏.


更新2
我能够使用几个mods正确地获得主题的动作模式.

  1. 动作模式背景.事实证明你只需将ActionMode主题背景设置为android:background!此外,您需要在主题上指定它的文本.

    windowActionModeOverlay
    <item name="windowActionBar">false</item>

  2. 后箭头没有被设计样式.我覆盖了所使用的drawable,只是添加了我自己的白色.
    windowActionModeOverlay

Jon*_*ona 16

好吧,在挖掘了支持库中的一些样式,主题,attrs和代码之后,我终于能够正确地设置动作模式的样式.

在我提出我的问题的解决方案之前,我必须提到支持库似乎有一个错误.当您隐藏窗口操作栏时,它似乎会松开操作模式的设置主题.我已经报告了一个错误,看他们是否解决了这个问题或提供了更多细节.

所以解决方案是基本上为背景,文本和关闭图标设置样式.这样做需要使用我自己的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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)
  • 背景
    这很棘手,因为actionModeBackground不能用于设置动作模式的背景.您必须通过android:backgroundActionMode样式的标准更改背景.
  • 标题文本
    只需为titleTextStyle提供一般样式,即可更改文本颜色.
  • 关闭图标
    下载了材质图标,并使用actionModeCloseDrawableattr 添加了我自己的关闭图标.