我的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:background
和background
。唯一改变的是当我使用另一个父母时
Theme.App.Compat.Light
或Theme.AppCompat.Light.DarkActionBar
。
有人有想法,我怎么能在运行时改变颜色和其他东西?
答案 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>