我的主题基于Theme.AppCompat.Light
,如下所示:
<style name="core" parent="Theme.AppCompat.Light" >
<!-- Material, Yo!-->
<item name="colorPrimary">@color/theme_main_color</item>
<item name="colorPrimaryDark">@color/deep_purple</item>
<item name="colorAccent">@color/theme_accent_color</item>
<item name="android:navigationBarColor" tools:ignore="NewApi">?attr/colorPrimary</item>
<!-- Toolbar -->
<item name="theme">@style/my_toolbar_theme</item>
<item name="drawerArrowStyle">@style/my_drawer_arrow</item>
<!-- Actionbar -->
<item name="android:actionBarDivider">@null</item>
<item name="android:actionBarTabStyle">@null</item>
<item name="android:actionBarTabBarStyle">@null</item>
<!-- Contextual Actionbar -->
<item name="windowActionModeOverlay">true</item>
<item name="actionModeBackground">?attr/colorAccent</item>
<item name="actionModeStyle">@style/my_actionmode_style</item>
</style>
<style name="my_drawer_arrow" parent="Widget.AppCompat.DrawerArrowToggle" >
<item name="spinBars">true</item>
<item name="color">@color/theme_accent_color</item>
</style>
<style name="my_toolbar_style">
<item name="android:id">@id/toolbar</item>
<item name="android:minHeight">?attr/actionBarSize</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">match_parent</item>
<item name="android:background">?attr/colorPrimary</item>
<item name="android:elevation" tools:ignore="NewApi">5dp</item>
</style>
<style name="my_actionmode_style" parent="Widget.AppCompat.Light.ActionMode.Inverse" >
<item name="titleTextStyle">@style/my_actionmode_title_style</item>
<item name="subtitleTextStyle">@style/my_actionmode_subtitle_style</item>
</style>
<style name="my_toolbar_style.gradient">
<item name="android:background">@drawable/ab_gradient_bg</item>
</style>
<style name="my_toolbar_theme" parent="ThemeOverlay.AppCompat.Dark.ActionBar" >
<!-- Customize the toolbar here -->
</style>
<style name="my_actionmode_title_style" parent="TextAppearance.AppCompat.Widget.ActionMode.Title">
<item name="android:textColor">@color/std_white</item>
</style>
<style name="my_actionmode_subtitle_style" parent="TextAppearance.AppCompat.Widget.ActionMode.Subtitle">
<item name="android:textColor">@android:color/white</item>
</style>
在 actionmode 中,我希望看到带有白色后箭头的白色标题/副标题。我已经能够将标题和副标题文本颜色设置为白色,但后面的箭头仍然是黑色。此问题仅发生在我使用SupportActionbar而非工具栏的位置(工具栏中的后退箭头为白色)。
这是我在ActionMode中的工具栏。
这是ActionMode中的操作栏。相同的手机,相同的应用程序,相同的主题,只是一个不同的活动。
我在主题中找不到任何可以确定此颜色的内容。根据消息来源,图标为@drawable/abc_ic_ab_back_mtrl_am_alpha
,为白色,因此必须对其进行着色。这种黑色的颜色来自哪里?
答案 0 :(得分:32)
使用AppCompat进行自定义:
在您的应用级主题中:
<style name="MyTheme" parent="Theme.AppCompat.Light">
<item name="actionModeCloseDrawable">@drawable/ic_actionbar_back</item>
<item name="actionModeCloseButtonStyle">@style/myclosebutton</item>
</style>
在CloseButtonStyle中:
<style name="myclosebutton" parent="Widget.AppCompat.Light.ActionButton.CloseMode">
<item name="android:tint">#ff0</item> <!-- whatever color -->
</style>
答案 1 :(得分:6)
我遇到了同样的问题,我通过明确声明我想在样式中使用的图标来解决它:
<item name="android:actionModeCloseDrawable">@drawable/ab_back</item>
我提供@ drawable / ab_back。
这并不理想,因为我想正确设置样式并让它继承父主题中正确的颜色,而不需要声明如此具体的细节。但是,我觉得 ActionBar,SupportActionBar,SherlockActionBar,ActionBarActivity,FragmentActivityWithASherlockSupportActionToolbar 周围的一切都被打破了,并且设计糟糕,我很乐意通过解决方法来解决它。
答案 2 :(得分:0)
尝试使用“colorControlNormal”属性,如下面的“NoActionBar主题”
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="colorControlNormal">@android:color/white</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
答案 3 :(得分:-1)
我有最好的答案
Spannable text = new SpannableString( mode.getTitle());
text.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.colorPrimaryDark)),
0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
mode.setTitle(text);