2015-02-05 9 views
8

Il mio tema principale è basata sulla Theme.AppCompat.Light come segue:Personalizzazione del 'back' freccia di colore in Actionmode con appcompat-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> 

In actionmode Mi piacerebbe vedere il titolo bianco/sottotitoli con una freccia posteriore bianca. Sono stato in grado di impostare il titolo e il sottotitolo dei colori del testo in bianco, ma la freccia indietro rimane nera. Questo problema si verifica solo nei luoghi in cui sto utilizzando la barra degli strumenti Support e non la barra degli strumenti (la freccia indietro nella barra degli strumenti è bianca).

Questa è la mia barra degli strumenti in modalità Action.

This is my toolbar in ActionMode

Questa è l'ActionBar in ActionMode. Stesso telefono, stessa app, stessi temi, solo un'attività diversa.

This is the actionbar in ActionMode

non riesco a trovare nulla nei temi che avrebbe determinato questo colore. Secondo la fonte, l'icona è @drawable/abc_ic_ab_back_mtrl_am_alpha, che è bianca, quindi qualcosa deve essere tinta. Da dove viene questo colore black-ish?

+0

Prova questo: http://stackoverflow.com/questions/27861102/actionbardrawertoggle-v7-arrow-color – Quanturium

risposta

5

Ho avuto lo stesso problema e ho risolto dichiarando esplicitamente l'icona voglio usare nello stile:

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

Dove @ drawable/ab_back è fornito da me.

Questo non è l'ideale, perché mi piacerebbe impostare correttamente lo stile e lasciarlo funzionare ereditando i colori giusti dal tema principale, senza la necessità di dichiarare dettagli così specifici. Ma, sento tutto intorno all'azione ActionBar, SupportActionBar, SherlockActionBar, ActionBarActivity, FragmentActivityWithASherlockSupportActionToolbar è COSÌ rotto e progettato male che sono felice di risolverlo con una soluzione alternativa.

+3

Sì, non volevo farlo. Ci sono un sacco di discrepanze nelle librerie di supporto. Basta fare Steve Jobs ridacchiare nella sua tomba ogni volta che qualcuno dice _Fragmentation_ ... – copolii

0

Prova "colorControlNormal" Property Ti piace indicato di seguito nel vostro "NoActionBar tema"

<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

Per personalizzare questo utilizzando AppCompat:

nel tema livello di app:

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

Nel CloseButtonStyle:

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

Questo dovrebbe essere contrassegnato come la risposta corretta. Permette di cambiare il colore della freccia indietro mentre si è in modalità azione senza dover sapere quale è il drawable in uso. Grazie. – Rui

+0

Grazie amico .. finalmente ho trovato qualcosa che funziona ...! –

-1

devo migliore risposta per questo

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