从 Appcompat 21 全局覆盖样式
Globally overriding styles from Appcompat 21
我目前正在将应用程序移植到 r21 appcompat-v7 库(和 Android Studio/Gradle)。在这个应用程序中,几乎每个小部件都以某种方式设置了样式,这与以前使用的 r19 版本的库一起工作得很好。
自 r21 以来,system/lib 忽略了许多样式,并使用了 Material 样式。对于 Spinner
、ActionBar
和 EditText
似乎尤其如此(至少在这些我发现了)。我的 RadioButton
s,例如 CheckBox
es 的主题和以前一样。
这是 Spinner
的相关 XML (v14)(post 的名称已更改):
<style name="Theme.MyTheme" parent="@style/Theme.AppCompat.Light">
...
<item name="android:dropDownSpinnerStyle">@style/MySpinner</item>
...
</style>
<style name="MySpinner" parent="Widget.AppCompat.Spinner">
<item name="android:background">@drawable/spinner_background_holo_light</item>
<item name="android:dropDownSelector">@drawable/list_selector_holo_light</item>
</style>
当然 Theme.MyTheme 是在清单应用程序范围内设置的。
现在有趣的是,当我分别为布局中的每个 Spinner
设置此样式时,它工作得很好。
那么,有人知道这是否是由支持库引起的吗?我该如何解决?谢谢!
AppCompat 覆盖了其平台主题的 android:spinnerStyle
属性。您是否已尝试覆盖它而不是 android:dropDownSpinnerStyle
?
我目前正在将应用程序移植到 r21 appcompat-v7 库(和 Android Studio/Gradle)。在这个应用程序中,几乎每个小部件都以某种方式设置了样式,这与以前使用的 r19 版本的库一起工作得很好。
自 r21 以来,system/lib 忽略了许多样式,并使用了 Material 样式。对于 Spinner
、ActionBar
和 EditText
似乎尤其如此(至少在这些我发现了)。我的 RadioButton
s,例如 CheckBox
es 的主题和以前一样。
这是 Spinner
的相关 XML (v14)(post 的名称已更改):
<style name="Theme.MyTheme" parent="@style/Theme.AppCompat.Light">
...
<item name="android:dropDownSpinnerStyle">@style/MySpinner</item>
...
</style>
<style name="MySpinner" parent="Widget.AppCompat.Spinner">
<item name="android:background">@drawable/spinner_background_holo_light</item>
<item name="android:dropDownSelector">@drawable/list_selector_holo_light</item>
</style>
当然 Theme.MyTheme 是在清单应用程序范围内设置的。
现在有趣的是,当我分别为布局中的每个 Spinner
设置此样式时,它工作得很好。
那么,有人知道这是否是由支持库引起的吗?我该如何解决?谢谢!
AppCompat 覆盖了其平台主题的 android:spinnerStyle
属性。您是否已尝试覆盖它而不是 android:dropDownSpinnerStyle
?