首页 > 解决方案 > Android API 20 或更低版本以编程方式更改微调器下划线颜色

问题描述

我的问题与上面的问题不同。

我正在为我的应用程序使用 appcompat 主题,并使用 setBackgroundTintList() 设置微调器下划线颜色并且它可以工作。但是,文档说这将始终在 API v21 或更高版本上运行时生效。如果有人知道如何更改下划线颜色 API v20 及更低版本,我将不胜感激。

我不能使用styles.xml,因为我需要根据某些条件更改颜色,所以我想弄清楚如何在代码中动态更改它。

更新 好的,所以现在我可以通过从 Spinner 更改为 AppCompatSpinner 并使用 ViewCompat.SetBackgroundTintList() 来更改 Android API 20 上的三角形图标颜色。阅读文档,spinner 需要为 API 20 或更低版本实现 TintableBackgroundView。AppCompatSpinner 正在实现 TintableBackgroundView。但是,我仍然看不到下划线:(

标签: androidandroid-spinner

解决方案


您可以使用 XML 作为背景,因此背景将出现在所有 API 版本中。为 SPINNER 制作自定义 XML 布局。示例是

<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item>
    <layer-list>
       <item>
            <shape android:shape="rectangle">
                <solid android:color="@color/white" />
                <stroke android:width="2px" android:color="@color/darkgray_7" />
                <corners android:radius="5dp" />
            </shape>
       </item>

       <item>
            <bitmap
                android:gravity="right" android:src="@drawable/arrow" />
       </item>
    </layer-list>
  </item>

</selector>

推荐阅读