android - actionBar背景没有改变

标签 android

所以我是应用程序开发新手,目前正在遵循 android.com 上的开发人员指南。我陷入了“风格化你的actionBar”部分,因为网站上建议的代码不起作用:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

    <!-- ActionBar styles -->
    <style name="MyActionBar"
           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@drawable/actionbar_background</item>

        <!-- Support library compatibility -->
        <item name="background">@drawable/actionbar_background</item>
    </style>
</resources>

我收到有关 android:backgound 的兼容性错误,因为我的 minSdk 是 7,所以无法使用该错误(尽管指南声称它应该可以工作)。 我不想改变我的minSdk,我尝试将themes.xml 分成2 个,一个放入values,另一个放入values-v11。该错误不再发生,但是当我运行应用程序时,actionBar 不会更改其背景。这是两个文件:

这个是值

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@style/Theme.AppCompat.Light.DarkActionBar">

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>
    <style name="MyActionBar"
           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <!-- Support library compatibility -->
        <item name="background">@drawable/actionbar_background</item>
    </style>
</resources>

这个位于values-11

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>   
    </style>
    <style name="MyActionBar"
           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">#FFB300</item>
    </style>
</resources>

你知道这里出了什么问题吗?

我的设备上的 API 等级是 21

最佳答案

截至AppCompat v21 ,不再使用 android: 属性。它还支持color theming ,它提供了一种使用非常简单的主题设置操作栏(以及 Android 5.0 设备上的状态栏)颜色的非常简单的方法:

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">  
    <!-- colorPrimary is used for the default action bar background -->
    <item name="colorPrimary">@color/my_awesome_color</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">@color/my_awesome_darker_color</item>

    <!-- colorAccent is used as the default value for colorControlActivated
         which is used to tint widgets -->
    <item name="colorAccent">@color/accent</item>

    <!-- You can also set colorControlNormal, colorControlActivated
         colorControlHighlight & colorSwitchThumbNormal. -->
</style>  

关于android - actionBar背景没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26451555/

相关文章:

安卓:找不到 Looper.quilt()

Android BLE 错误 0x06 不支持请求

java - 使用fragment_Tabbed Activity 将数据保存到Sqlite 数据库

java - Android/java初学语法题

android - OnActivityResult 未在 Activity 的 Fragment 中被调用

android - 使用 bindService 使 android 服务保持 Activity 状态

Android 相当于 iOS 的 UILocalNotification

android - 当应用程序在后台使用数据负载时如何处理 Android FCM 消息?

android - 在自定义对话框中添加 ViewPager。无法让适配器工作

Android - 复选框和文本之间的间距