我现在已经为我的actiobar设置了另一种颜色。 我在google上搜索并尝试了多种解决方案。但是他们没有为我做好准备。
我现在得到的代码是:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme"
parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">#cac09f</item>
</style>
</resources>
这会导致我的应用崩溃并显示:
引起:java.lang.IllegalStateException:您需要在此活动中使用Theme.AppCompat主题(或后代)。
然后我尝试将主题设置为&#34; Theme.Appcompat&#34;但这不会改变动作栏的颜色。
有没有人知道这方面的解决方案?
我在运行android 4.4.4的手机上运行它。 我的项目适用于API 16及更高版本(4.1)
答案 0 :(得分:1)
您正在使用支持包中的活动(AppCompatActivity
),它只能使用兼容性主题(Theme.AppCompat
)。
设置自定义操作栏背景的原因不起作用,是因为您还需要使用兼容性属性:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/my_red</item>
<item name="background">@color/my_red</item>
</style>
<color name="my_red">#cac09f</color>
答案 1 :(得分:0)
我认为使用toobar会更好,因为它更容易工作。
在xml中使用此代码:
<android.support.v7.widget.Toolbar
android:id="@+id/tbMain"
android:layout_width="match_parent"
app:theme="@style/style_toobar"
android:layout_height="?attr/actionBarSize"
/>
在style.xml中使用:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorPrimary</item>
</style>
<style name="style_toobar" parent="Theme.AppCompat">
<item name="popupTheme">@style/Theme.AppCompat.Light</item>
<item name="colorControlNormal">@color/colorAccent</item>
</style>
在活动中使用:
Toobar tbMain = (Toobar)findViewById(R.id.tbMain);
setSupportActionBar(tbMain);