【问题标题】:Android API 20 or Lower Change Spinner Underline color programaticallyAndroid API 20 或更低版本以编程方式更改微调器下划线颜色
【发布时间】:2018-07-05 00:48:26
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android android-spinner


    【解决方案1】:

    您可以使用 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>
    

    【讨论】:

    • 谢谢!!我在 Drawable 文件夹中添加了我的背景资源文件,然后使用 _spinner.SetBackgroundResource() 来设置它,然后使用 spinner.SetSupportBackgroundTintList 来设置我想要设置的任何颜色。我的背景文件只包含 schemas.android.com/apk/res/android">
    • 对不起,不能再编辑我上面的评论了。所以,我想在第一条评论之后写的是......这些项目来自Android 5使用的默认材料资源文件夹AppCompat 主题默认及以上。现在所有 android 版本都会动态更改下划线颜色。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 2015-04-02
    • 2020-09-13
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    相关资源
    最近更新 更多