使用appcompat-v7自定义Actionmode中的“后退”箭头颜色

我的主题是基于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> 

动作模式中,我希望看到带有白色后退箭头的白色标题/字幕。 我已经能够将标题和副标题文字颜色设置为白色,但后退箭头仍然是黑色的。 这个问题只发生在我使用SupportActionbar而不是工具栏的地方(工具栏中的后退箭头是白色的)。

这是我在ActionMode的工具栏。

这是我在ActionMode的工具栏

这是ActionMode中的操作栏。 相同的手机,相同的应用,相同的主题,只是一个不同的活动。

这是ActionMode中的操作栏

我无法find任何决定这种颜色的主题。 根据来源,图标是@drawable/abc_ic_ab_back_mtrl_am_alpha ,这是白色的,所以一定要着色。 这个黑色的颜色来自哪里?

Solutions Collecting From Web of "使用appcompat-v7自定义Actionmode中的“后退”箭头颜色"

使用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> 

我有同样的问题,我已经通过显式声明我想要在样式中使用的图标来解决它:

 <item name="android:actionModeCloseDrawable">@drawable/ab_back</item> 

其中@ drawable / ab_back由我提供。

这是不理想的,因为我想正确地设置风格,让它inheritance父主题的正确的颜色,而不需要声明如此特定的细节。 但是,我感觉周围的ActionBar,SupportActionBar,SherlockActionBar,ActionBarActivity,FragmentActivityWithASherlockSupportActionToolbar的一切都是坏了,糟糕的devise,我很高兴解决它的解决方法。

尝试“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> 

我对此有最好的回答

  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);