Search code examples
androidandroid-spinnerandroid-appcompatunderline

Android Spinner Underline color


I can add underline in spinner using style="@style/Base.Widget.AppCompat.Spinner.Underlined". How can I change the color of the underline using style only? I don't 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.


Solution

  • 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