2016-06-22 3 views
0

Я пытался решить это в течение 3 часов и не нашел ответов. Вот мой код v21 \ styles.xml. Изменение параметров displayOptions для панели действий здесь имеет эффект, но ничто не меняет цвет текста!Как изменить цвет текста панели действий в PreferenceActivity

<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> 
     <item name="android:windowBackground">@color/colorBackground</item> 
     <item name="android:alertDialogTheme">@style/MyDialogTheme</item> 
     <item name="android:color">@color/colorSecondary</item> 
    </style> 

    <style name="PreferencesTheme" parent="AppTheme"> 
     <item name="android:textColorPrimary">@color/colorSecondary</item> 
     <item name="android:textColorSecondary">@color/colorSecondaryFaded</item> 
     <item name="android:listSeparatorTextViewStyle">@style/ListSeparatorText</item> 
     <item name="colorControlNormal">@color/colorSecondary</item> 
     <item name="actionBarStyle">@style/ActionBarTheme</item> 
    </style> 

    <style name="ListSeparatorText" parent="android:Widget.TextView"> 
     <item name="android:background">@color/colorBackgroundLight</item> 
     <item name="android:color">@color/colorBackgroundLight</item> 
    </style> 

    <style name="ActionBarTheme" parent="Widget.AppCompat.Light.ActionBar.Solid"> 
     <item name="displayOptions">showHome|homeAsUp|showTitle</item> 
     <item name="android:textColorPrimary">@color/colorSecondary</item> 
     <item name="android:titleTextAppearance">@style/ActionBar.Title</item> 

    </style> 

    <style name="ActionBar.Title"> 
     <item name="android:textColorPrimary">@color/colorSecondary</item> 
    </style> 

И мои настройки Деятельность onCreate, если это полезно.

public class SettingsActivity extends AppCompatPreferenceActivity { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setupActionBar(); 
     getFragmentManager().beginTransaction().replace(android.R.id.content, 
       new GeneralPreferenceFragment()).commit(); 
    } 

    /** 
    * Set up the {@link android.app.ActionBar}, if the API is available. 
    */ 
    private void setupActionBar() { 
     ActionBar actionBar = getSupportActionBar(); 
     if (actionBar != null) { 
      // Show the Up button in the action bar. 
      actionBar.setDisplayHomeAsUpEnabled(true); 
     } 
    } 
+0

Вы работаете на API уровне 21 и выше? Если нет, вам нужны стили для уровня API <21 – danypata

+0

Да, я работаю на API 23. Спасибо, я должен был упомянуть об этом. –

ответ

0

Ну, мне понадобилось еще 4 часа, чтобы найти это, благодаря другому сообщению, зарытому в Интернете. Мне нужно было использовать actionBarTheme вместо actionBarStyle. OMG это была боль!

<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> 
     <item name="android:windowBackground">@color/colorBackground</item> 
     <item name="android:alertDialogTheme">@style/MyDialogTheme</item> 

    </style> 

    <style name="PreferencesTheme" parent="AppTheme"> 
     <item name="android:textColorPrimary">@color/colorSecondary</item> 
     <item name="android:listSeparatorTextViewStyle">@style/ListSeparatorText</item> 
     <!-- This attribute alone sets the colour of the text to the parent text colour--> 
     <item name="actionBarTheme">@style/PreferencesTheme.ActionBarTheme</item> 
    </style> 

    <style name="ListSeparatorText" parent="android:Widget.TextView"><!--parent is optional --> 
     <item name="android:background">@color/colorBackgroundLight</item> 
     <item name="android:color">@color/colorBackgroundLight</item> 
    </style> 

    <style name="PreferencesTheme.ActionBarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar"> 
     <!-- THIS is where you can color the arrow --> 
     <item name="colorControlNormal">@color/colorBackgroundLight</item> 
     <item name="android:textColorPrimary">@color/colorBackground</item> 
    </style> 
+0

Это не сработает для меня –

+0

Вы хотите разместить свой код в другом вопросе? –

+0

Он работает, просто определите тему в манифесте android для активности, иначе он не работает –

Смежные вопросы