2016-06-22 64 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清单中的活动其他方式不工作 –