【问题标题】:Styling the AppCompat Spinner background color设置 AppCompat Spinner 背景颜色的样式
【发布时间】: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。

【问题讨论】:

    标签: android android-styles


    【解决方案1】:

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

    这个例子展示了如何改变微调器的背景颜色。

    但是是韩文,不是英文

    查看链接。

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

    【讨论】:

    • 我在问题中提到我知道如何创建自己的可绘制对象并将其设置为背景。我想知道是否可以在样式中为现有的可绘制形状着色,而不必在必须定义形状的地方创建新的可绘制对象。
    猜你喜欢
    • 2016-01-16
    • 2015-03-20
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多