【发布时间】:2020-10-29 02:53:27
【问题描述】:
我正在尝试制作一个从 AppCompat 扩展的简单主题,并且我想更改 Spinner 弹出窗口的背景颜色。我可以完全通过使用颜色完全重新设置 AppCompat 的样式,但在 Spinner 上卡住了。
检查 Widget.AppCompat.Spinner 的 xml,我发现它的 android:popupBackground 是 API 20 及更低版本的 9 补丁位图,但 21 及更高版本的矢量可绘制。我知道如何创建一个有色 9-patch。
对于 21+,微调器背景在 popup_background_material.xml 中定义为:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="2dp" />
<solid
android:color="?attr/colorPopupBackground" />
</shape>
我尝试在我的values-v21 样式中设置此颜色属性,如下所示:
<style name="MyTheme" parent="MyBaseTheme">
<item name="android:colorPopupBackground">@color/colorSpinnerBackground</item>
</style>
但在构建时出现错误:
AAPT: error: style attribute 'android:attr/colorPopupBackground' is private.
是否有一些更简单的方法可以为我缺少的 Spinners 重新着色?我知道我可以复制粘贴矢量 xml 文件并在那里更改颜色,但我更愿意只使用颜色,因此如果 AppCompat 的主题发生更改,我可以通过更新其版本来自动获取它们。
当前使用 AppCompat 1.0.2。
【问题讨论】: