AppCompat ActionBar背景颜色

时间:2014-12-03 21:46:54

标签: android-layout android-activity android-actionbar android-styles android-actionbar-compat

我的Android应用程序中有这个style.xml:

<resources xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
<style name="OrangeTheme" parent="@style/Theme.AppCompat">
    <item name="android:actionBarStyle" tools:ignore="NewApi">@style/OrangeTheme.OrangeActionBar</item>
    <item name="android:windowActionBar">true</item>
</style>

<style name="OrangeTheme.OrangeActionBar" parent="@style/Widget.AppCompat.ActionBar">
    <item name="android:background">@color/orange</item>
    <item name="background">@color/orange</item>
    <item name="android:backgroundStacked">@color/orange</item>
    <item name="android:backgroundSplit">@color/orange</item>
    <item name="android:titleTextStyle">@style/Theme.MyAppTheme.ActionBar.TitleTextStyle</item>
</style>

<style name="Theme.MyAppTheme.ActionBar.TitleTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">@color/black</item>
</style>

我搜索了StackOverflow和Google,但没有任何帮助。我无法更改ActionBar背景颜色。

MainActivity内,我使用此代码:

 public void restoreActionBar() {
    ActionBar actionBar = getSupportActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
    actionBar.setDisplayShowTitleEnabled(true);
    actionBar.setTitle(mTitle);
}

我尽量不使用AppCompat,但后来我的名字有很多错误。它扩展了ActionBarActivity。如果我将其更改为FragmentActivity我无法使用getSupportActionBar()而没有getActionBar(),则始终为null

minSdkVersion 19
targetSdkVersion 21

所以现在我无法改变它。我尝试重命名我的样式主题的父级。我尝试使用andrioud:backgroundbackground。唯一改变的是当我使用另一个父母时 Theme.App.Compat.LightTheme.AppCompat.Light.DarkActionBar

有人有想法,我怎么能在运行时改变颜色和其他东西?

2 个答案:

答案 0 :(得分:0)

使用新的AppCompat-v7(v21),您可以使用新的颜色主题属性。请参阅here

或者你必须使用<item name="actionBarStyle">属性(不带前缀 android )。

答案 1 :(得分:0)

要在AppCompat中使用背景颜色,您还需要定义不带android:属性的项目名称。

例如:

<style name="MyActionBar" parent="Theme.AppCompat.Light">
    <item name="android:background">@color/action_bar_background</item>

    <item name="background">@color/action_bar_background</item> //<--background item without the android attribute
</style>

然后在自定义主题中为自定义操作栏样式执行相同的操作:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>