我不确定这是不是错误,或者我不能正确使用新的工具栏类。
我能够使用其中一个可用主题直接成功操作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>
在我的活动中,我执行以下操作以使我的工具栏成为默认的ActionBar。
Toolbar toolbar = (Toolbar) findViewById(R.id.toolBar);
setSupportActionBar(toolbar);
现在我尝试了很多东西。我甚至尝试潜入源头来弄清楚发生了什么。
为什么会发生这种情况?如何设置ActionMode的样式?或者更具体地说,我如何更改ActionMode的背景?
更新1
我注意到,在将<item name="windowActionBar">false</item>
添加到我的活动主题时,操作模式会丢失其主题而不是将其设置为true。显然将其设置为true它将包括窗口操作栏。
更新2
我能够使用几个mods正确地获得主题的动作模式。
动作模式背景。事实证明你只需将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>
后箭头未设置样式。我覆盖了所使用的drawable,只是添加了我自己的白色。
<item name="actionModeCloseDrawable">@drawable/ic_arrow_back_white_24dp</item>`
答案 0 :(得分:16)
嗯,在挖掘了支持库中的一些样式,主题,attrs和代码后,我终于能够正确设置动作模式的样式。
在我提供问题的解决方案之前,我必须提到支持库似乎存在错误。当您隐藏窗口操作栏时,它似乎会松开操作模式的设置主题。我已经报告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
更改背景。actionModeCloseDrawable
attr。