themes.xml不会影响我的Action Bar以获取不同的Android版本

时间:2014-04-10 14:41:20

标签: android xml android-layout

我想使用themes.xml自定义ActionBar。为此,我使用以下代码:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="MyCustomStyle" parent="@style/Theme.AppCompat.Light">
        <item name="actionBarStyle">@style/MyCustomStyle.ActionBarStyle</item>
    </style>

    <style name="MyCustomStyle.ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="titleTextStyle">@style/MyCustomStyle.ActionBar.TitleTextStyle</item>
        <item name="background">@color/Green</item>
    </style>

    <style name="MyCustomStyle.ActionBar.TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/Red</item>
    </style>  
</resources>

我将它设置为我的Manifest上的活动主题。

当我使用2.2.1的设备尝试时,它可以工作。但是,当我尝试4.1.2和4.2.x,4.3时,我在LogCat上看到默认的灰色背景和黑色标题颜色以及以下行:

04-10 17:38:07.296: W/ResourceType(11830): Failure getting entry for 0x010802c9 (t=7 e=713) in package 0 (error -75)
你可以指出我的错误吗?

1 个答案:

答案 0 :(得分:0)

我通过在values-v11和values-v14文件夹中创建新的themes.xml和style.xml来解决这个问题,方法是添加额外的“android:actionBarStyle”,“android:titleTextStyle”和“android:background”属性。虽然我的项目中的min sdk值为8,但可以使用“android:”键并在values-v11和values-v14文件夹中使用。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="MyCustomStyle" parent="@style/Theme.AppCompat.Light">

        <item name="android:actionBarStyle">@style/MyCustomStyle.ActionBarStyle</item>
        <item name="actionBarStyle">@style/MyCustomStyle.ActionBarStyle</item>
    </style>

    <style name="MyCustomStyle.ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:titleTextStyle">@style/MyCustomStyle.ActionBar.TitleTextStyle</item>

        <item name="android:background">@color/ichaseutheme</item>
        <item name="background">@color/Red</item>
    </style>

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

</resources>