Android Spinner Underline color

假如想象 提交于 2019-11-26 21:19:44

问题


I can add underline in spinner using style="@style/Base.Widget.AppCompat.Spinner.Underlined". How can I change color of underline using style only? I dont want to use any drawable file to change this.

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

Using above style, Its only highlight underline when user click on it. Its not changing color of underline on normal state.


回答1:


By default the Spinner will use the color set via android:textColorSecondary or colorControlNormal in your AppTheme. So either set the appropriate colors there or define a new Theme and apply this one to your Spinner:

Example:

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" />

Note: The dropdown arrow will also be tinted - I'm not aware of an option to color the arrow separately




回答2:


Seems like this question has already been answered. But here is a way to resolve that programatically as well. (Tested on API 19 & Above).

Use ViewCompat for this.

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



回答3:


Add this to spinner

android:backgroundTint="@color/gray"


来源:https://stackoverflow.com/questions/37108954/android-spinner-underline-color

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!