color android spinner appcompat underline

color - Android spinner con subrayado appcompat



android spinner underline color (4)

Estoy usando un tema de appcompat para mi aplicación. Necesito saber cómo puedo mostrar el subrayado a spinner. Solo está mostrando el ancla. Intenté configurar el subrayado usando Android: fondo, pero hace que el anclaje desaparezca.


Actualice su biblioteca de soporte y en el uso de XML

Por favor agregue este estilo a su Spinner

style="@style/Base.Widget.AppCompat.Spinner.Underlined"


Aplicando style="@style/Base.Widget.AppCompat.Spinner.Underlined" no mostró ninguna diferencia. Luego le dio android:backgroundTint y android:backgroundTintMode a spinner y funcionó.

<Spinner android:id="@+id/spBookingType" android:spinnerMode="dropdown" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/Base.Widget.AppCompat.Spinner.Underlined" android:backgroundTint="#ff000000" android:backgroundTintMode="src_in" />


Esta es una forma tonta (y no perfecta) de cambiar el rumbo y subrayar el color en el tema de appcompat. El punto principal es que personalicé las imágenes de la biblioteca de soporte de Android y los archivos xml para cambiar el color.

1) ir al paquete de la biblioteca de soporte y copiar 2 imágenes (o descargar mi encargo desde la parte inferior de esta publicación)

/your-app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.0/res/drawable-hdpi/abc_spinner_mtrl_am_alpha.9.png

y

/your-app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.0/res/drawable-hdpi/abc_textfield_default_mtrl_alpha.9.png

2) Haz una copia de esas imágenes

3) Cambie el color de abc_spinner_mtrl_am_alpha.9.png (advertencia: deje los bordes negros tal como están, es para 9 parches)

4) Cambie el color de la segunda línea inferior de abc_textfield_default_mtrl_alpha.9.png (puede ver en la imagen pequeña adjunta a continuación)

5) Guarde y mueva archivos a los proyectos arrastrables

6) Crear bottom_line_color.xml drawable:

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="-6dp" android:left="-6dp" android:right="-6dp"> <shape> <stroke android:color="@color/brown" android:width="6dp"/> </shape> </item>

7) Crear spinner_bottom_line.xml

<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetLeft="@dimen/abc_control_inset_material" android:insetTop="@dimen/abc_control_inset_material" android:insetBottom="@dimen/abc_control_inset_material" android:insetRight="@dimen/abc_control_inset_material"> <selector> <item android:state_checked="false" android:state_pressed="false"> <layer-list> <item android:drawable="@drawable/my_custom_abc_textfield_default_mtrl_alpha" /> <item android:drawable="@drawable/my_custom_abc_spinner_mtrl_am_alpha" /> </layer-list> </item> <item> <layer-list> <item android:drawable="@drawable/my_custom_abc_textfield_default_mtrl_alpha" /> <item android:drawable="@drawable/my_custom_abc_spinner_mtrl_am_alpha" /> </layer-list> </item> </selector> </inset>

PD. No pude lograr el mismo estilo visual que el rotador predeterminado (los cambios visuales se muestran a continuación). Si comienzas a usar este tema personalizado, deberías usarlo en todos los proyectos.

Así que agrega a values ​​/ styles.xml

<style name="My.Spinner.Style" parent="Base.Widget.AppCompat.Spinner.Underlined"> <item name="android:background">@drawable/spinner_bottom_line</item> </style>

Y úsala en una aplicación como esta:

<Spinner android:id="@+id/account_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/My.Spinner.Style" />

Importante: debe cambiar el tamaño de la ruleta y colocarla en varias carpetas de drawables. Puedes encontrar el tamaño en la misma ruta que mostré arriba. Hay algunos tamaños populares:

drawables-mdpi 20x26 drawables-hdpi 29x38 drawables-xhdpi 38x50 drawables-xxhdpi 74x98

Puedes tomar mis imágenes personalizadas desde aquí:

my_custom_abc_spinner_mtrl_am_alpha:

my_custom_abc_textfield_default_mtrl_alpha:

El ejemplo de Spinner es (xxhdpi), la línea es mdpi (porque no necesitamos varias líneas en varias carpetas dibujables, por lo que solo podemos tener 1).

La diferencia visual (desde la ventana de vista previa de android studio xml) se muestra aquí:

La primera línea es mi spinner subrayado personalizado, la segunda es Base.Widget.AppCompat.Spinner.Underlined por defecto


en styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:spinnerStyle">@style/holoSpinner</item> </style> <style name="holoSpinner" parent="Widget.AppCompat.Spinner.Underlined"> <item name="android:textSize">16sp</item> <item name="android:textColor">@color/colorPrimary</item> </style>

========================

en Layout

<android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp"> <Spinner android:id="@+id/spinCountry" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/edit_text_bottom_border" android:paddingBottom="10dp" /> </android.support.design.widget.TextInputLayout>

============================================

archivo edit_text_bottom_border.xml en Drawable

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="1dp" android:left="-3dp" android:right="-3dp" android:top="-3dp"> <shape android:shape="rectangle"> <stroke android:width="1dp" android:color="#535353" /> <!--android:color="#535353" />--> </shape> </item> </layer-list>