使用/ Sherlock无法更改微调器背景的颜色

时间:2014-07-08 14:32:16

标签: android android-theme

我使用以下代码更改我的微调器的背景颜色。我很困惑为什么它不起作用。

style.xml

<style name="MyTheme" parent="@style/Theme.Sherlock.Light">
    <item name="windowActionBarOverlay">true</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="actionDropDownStyle">@style/MyActionBarSpinnerStyle</item>

</style>

<style name="MyActionBarSpinnerStyle" parent="@style/Widget.Sherlock.Light.Spinner.DropDown.ActionBar">
    <item name="android:background">@drawable/actionbar_spinner_background</item>
</style>

actionbar_spinner_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/spinner_background_disabled" android:state_enabled="false"/>
  <item android:drawable="@drawable/spinner_background_pressed" android:state_pressed="true"/>
  <item android:drawable="@drawable/spinner_background_focused" android:state_focused="true" android:state_pressed="false"/>
  <item android:drawable="@drawable/spinner_background_default"/>
</selector>

我有什么遗漏或做错了吗?

1 个答案:

答案 0 :(得分:0)

问题是以下代码行需要API级别11及以上版本:

<item name="android:windowActionBarOverlay">true</item>

解决方案 -

styles.xml中单独res/values-v11以支持android 3.0及更高版本中的相同功能。

仅适用于Android 3.0及更高版本

如果您的minSdkVersion设置为11 or higher,则您的自定义主题应使用Theme.Holo主题(或其中一个后代)作为您的父主题。

例如 -

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.Holo">
        <item name="android:windowActionBarOverlay">true</item>
    </style>
</resources>

适用于Android 2.1及更高版本

如果您的应用使用支持库与运行低于Android 3.0版本的设备兼容,则您的自定义主题应使用Theme.AppCompat主题(或其后代之一)作为您的父主题。

例如 -

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.AppCompat">
        <item name="android:windowActionBarOverlay">true</item>

        <!-- Support library compatibility -->
        <item name="windowActionBarOverlay">true</item>
    </style>
</resources>

注意:

请注意,此主题包含windowActionBarOverlay样式的两个定义:一个带有android: prefix,另一个带有{{1}}样式。具有android:前缀的那个版本适用于包含平台样式的Android版本,而没有前缀的版本适用于从支持库中读取样式的旧版本。

参考:

https://developer.android.com/training/basics/actionbar/overlaying.html#EnableOverlay