我使用以下代码更改我的微调器的背景颜色。我很困惑为什么它不起作用。
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>
我有什么遗漏或做错了吗?
答案 0 :(得分:0)
问题是以下代码行需要API级别11及以上版本:
<item name="android:windowActionBarOverlay">true</item>
在styles.xml
中单独res/values-v11
以支持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 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