设置AppCompat Spinner背景色的样式

问题描述

我正在尝试制作一个从AppCompat扩展的简单主题,并且想要更改微调框弹出窗口的背景颜色。我完全可以纯粹通过使用颜色来完全重新设置AppCompat的样式,但是卡在了Spinner上。

检查Widget.AppCompat.Spinner的xml,我发现它的android:popupBackground是API 20及以下版本的9补丁位图,但可绘制21及以上版本的向量。我知道如何创建有色的9补丁。

对于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。

解决方法

关于自定义微调器,我有一个很好的例子。

此示例显示了如何更改微调器背景颜色。

但这是韩语,不是英语

请参阅链接。

https://blog.naver.com/jinhan38/222094163563

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...