android - Android API 20 或更低版本以编程方式更改微调器下划线颜色
问题描述
我的问题与上面的问题不同。
我正在为我的应用程序使用 appcompat 主题,并使用 setBackgroundTintList() 设置微调器下划线颜色并且它可以工作。但是,文档说这将始终在 API v21 或更高版本上运行时生效。如果有人知道如何更改下划线颜色 API v20 及更低版本,我将不胜感激。
我不能使用styles.xml,因为我需要根据某些条件更改颜色,所以我想弄清楚如何在代码中动态更改它。
更新 好的,所以现在我可以通过从 Spinner 更改为 AppCompatSpinner 并使用 ViewCompat.SetBackgroundTintList() 来更改 Android API 20 上的三角形图标颜色。阅读文档,spinner 需要为 API 20 或更低版本实现 TintableBackgroundView。AppCompatSpinner 正在实现 TintableBackgroundView。但是,我仍然看不到下划线:(
解决方案
您可以使用 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>
推荐阅读
- android - 在 Android App 中使用 TensorFlow 检测对象检测中的多个框
- java - 如何在多台服务器上运行的应用程序之间共享文件
- ios - React Native - 如何在 IOS 中防止全屏视频模式?
- python - Python - 获取雅虎财务数据并保留数据标识符
- python - 如果(x % i)== 0,列表 x 是如何操作的
- php - 对具有最多相似标签的帖子进行排序
- node.js - 在 express 中的所有路由器上应用身份验证方法
- dart - 基于保持(颤动)的圆形进度按钮
- camunda - 以前版本的 Camunda 舞台名称更改
- java - 多线程与 CachedThreadPool