安卓下拉框底部线条颜色

11

我可以使用style="@style/Base.Widget.AppCompat.Spinner.Underlined"在旋转框中添加下划线。如何仅使用样式更改下划线的颜色?我不想使用任何可绘制文件来更改它。

 <item name="colorControlHighlight">@color/colorAccent</item>
 <item name="colorControlNormal">@color/colorAccent</item>

使用以上样式,只有在用户点击时才会高亮下划线。它不会改变正常状态下的下划线颜色。

3个回答

39

默认情况下,Spinner将使用在您的AppTheme中通过android:textColorSecondarycolorControlNormal设置的颜色。因此,请在那里设置适当的颜色或定义一个新的主题,并将其应用于您的Spinner:

示例:

styles.xml

<style name="ThemeSpinner">
    <!-- Color when pressed -->
    <item name="colorAccent">#ffa000</item>
    <!-- Default color for the dropdown arrow and line -->
    <item name="colorControlNormal">#ffc107</item>
</style>

layout.xml

<Spinner
    style="@style/Widget.AppCompat.Spinner.Underlined"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeSpinner" />

注意: 下拉箭头也会被着色 - 我不知道有单独着色箭头的选项。


1
如果Spinner位于ScrollView内部,则此方法无法正常工作。 - IgorGanapolsky
关于错误的红色,有什么方法可以获取它吗? - kingston
@kingston老实说,我从未见过带有错误状态的“Spinner”。 - reVerse
尝试在任何Google应用中添加新帐户。它会要求您输入出生日期。输入无效日期,然后按下“下一步”... - kingston
我问了一个关于这个的问题:http://stackoverflow.com/questions/39792721/spinner-with-error-in-android - kingston
与此样式实现完美配合:https://dev59.com/LWox5IYBdhLWcg3wCQAq - J A S K I E R

4
将此添加到旋转器中。
android:backgroundTint="@color/gray"

3

看起来这个问题已经得到了解答。但是这里也有一种编程方式可以解决这个问题(在API 19及以上版本中测试通过)。

使用ViewCompat来实现。

ViewCompat.setBackgroundTintList(spinner, ColorStateList.valueOf(your_color));

它应用颜色,但以意想不到的方式,因为它是在原始颜色之上应用的。 - Angelina
这在我上次尝试时有效,但可能需要调整您的用户界面,因为自从我上次使用以来,Android Compat库和组件已更改。 - sud007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接