更改ActionBar的样式

时间:2015-06-18 19:22:48

标签: android android-actionbar android-appcompat

我在我的操作栏上工作,我正在尝试更改样式,我希望背景为白色,文本颜色为蓝色,我在style.xml中执行以下操作:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/action_bar</item>
    <item name="colorAccent">@color/top_bar</item>
    <item name="colorPrimaryDark">@color/cyan_500</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" 
                 parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="android:actionBarSize">20dp</item>
    <item name="android:background">@color/white</item>
    <item name="android:titleTextStyle">@style/MyTitleTextBarStyle</item>
</style>

<style name="MyTitleTextBarStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/colorRB</item>
</style>

</resources>

没有任何事情发生,适用于API 15至22。 我已经设法通过代码来改变背景:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_reasonlocation);
    android.support.v7.app.ActionBar mAb = getSupportActionBar();
    mAb.setTitle(getString(R.string.reasonandlocation));
    mCd.setColor(getResources().getColor(R.color.white));
    mAb.setBackgroundDrawable(mCd);
    ...
}

如果您知道如何通过style.xml或代码解决这个问题,我将不胜感激。

3 个答案:

答案 0 :(得分:0)

您可以通过创建自定义样式来定义ActionBar(以及其他内容)的颜色:

只需编辑Android项目的res / values / styles.xmlfile即可。

例如:

        <resources>
 <style name="MyCustomTheme" 
    parent="@android:style/Theme.Holo.Light">
     <item name="android:actionBarStyle">@style/MyActionBarTheme</item>
 </style> 
<style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar">
 <item name="android:background">ANY_HEX_COLOR_CODE</item> </style> 
</resources>

然后将“MyCustomTheme”设置为包含ActionBar的Activity的主题。

你也可以像这样设置ActionBar的颜色:

  ActionBar actionBar = getActionBar();
 actionBar.setBackgroundDrawable(new ColorDrawable(Color.RED)); // set your desired color

答案 1 :(得分:0)

我通过代码解决了它,将以下内容添加到onCreate

中的previus代码中
    Spannable text = new SpannableString(mAb.getTitle());
    text.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.colorRB)), 0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    mAb.setTitle(text);

答案 2 :(得分:0)

android:移除android:actionBarStyle平台相关前缀。