2015-02-05 77 views
8

我的主題是基於Theme.AppCompat.Light如下:定製「返回」箭頭顏色Actionmode與程序兼容性-V7

<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中的工具欄。

This is my toolbar in ActionMode

這是ActionMode的動作條。相同的手機,相同的應用,相同的主題,只是一個不同的活動。

This is the actionbar in ActionMode

我無法找到將決定這個顏色主題什麼。據消息人士稱,該圖標是@drawable/abc_ic_ab_back_mtrl_am_alpha,它是白色的,所以必須有東西在着色。這種黑色顏色來自哪裏?

+0

最佳答案試試這個:http://stackoverflow.com/questions/27861102/actionbardrawertoggle-v7-arrow-color – Quanturium 2015-02-05 20:27:06

回答

5

我有同樣的問題,我已經明確地宣佈我想在風格上要使用的圖標解決了這個問題:

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

凡@繪製/ ab_back是由我提供。

這並不理想,因爲我想正確設置樣式並讓它繼承父級主題的正確顏色,而不需要聲明特定的細節。但是,我感覺周圍的一切都很糟糕,我很樂意使用解決方法來解決這個問題。

在你的應用程序級的主題:

<style name="MyTheme" parent="Theme.AppCompat.Light"> 
    <item name="actionModeCloseDrawable">@drawable/ic_actionbar_back</item> 
    <item name="actionModeCloseButtonStyle">@style/myclosebutton</item> 
</style> 

+3

呀,我不想這樣做。支持庫中有很多差異。足以讓史蒂夫喬布斯在他的墳墓裏傻笑,每次有人說_Fragmentation_ ... – copolii 2015-03-11 22:58:43

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> 
18

要定製此使用程序兼容性如下CloseButtonStyle:

<style name="myclosebutton" parent="Widget.AppCompat.Light.ActionButton.CloseMode"> 
    <item name="android:tint">#ff0</item> <!-- whatever color --> 
</style> 
+0

這應該被標記爲正確的答案。它允許在操作模式下更改後退箭頭的顏色,而無需知道正在使用的可繪製物。謝謝。 – Rui 2016-09-27 15:06:15

+0

謝謝隊友..最後我發現了一些可行的...! – 2016-12-19 20:59:35

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