使用Android Studios为actiobar设置自定义

时间:2015-10-12 20:43:31

标签: java android android-actionbar

我现在已经为我的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)

2 个答案:

答案 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);