Android spinner con subrayado appcompat

Estoy utilizando un tema appcompat para mi aplicación. Necesito saber cómo puedo mostrar el subrayado a spinner. Sólo está mostrando el ancla. Intenté configurar el subrayado usando android: fondo pero hace que el ancla desaparezca.

Actualizar su biblioteca de soporte y en uso XML

Añade este estilo a tu Spinner

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

Esto es hacky (y no perfecto) manera de cambiar el hilandero y subrayar el color en appcompat tema. Punto principal que personalizé imágenes de la biblioteca de soporte de Android y archivos xml para cambiar el color.

1) ir al paquete de la biblioteca de la ayuda y copiar 2 imágenes (o descargar mi costumbre del fondo de este poste)

 /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) Hacer una copia de esas imágenes

3) Cambie el color de abc_spinner_mtrl_am_alpha.9.png (advertencia: deja las fronteras negras como están, es para el parche 9)

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

5) Guardar y mover archivos a su proyecto drawables

6) Crear bottom_line_color.xml dibujable:

 <?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> 

PS No pude lograr el mismo estilo visual que el spinner predeterminado (cambios visuales que se muestran a continuación). Si empieza a usar este tema de hilandero personalizado, debe usarlo en todo el proyecto.

Por lo tanto, agregue 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 utilizarlo 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 redimensionar el hilandero y colocarlo en varias carpetas desplegables. Usted puede encontrar el tamaño en el mismo camino que he mostrado anteriormente. Hay pocos 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_spinner_mtrl_am_alpha

My_custom_abc_textfield_default_mtrl_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 sólo podemos tener 1).

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

Introduzca aquí la descripción de la imagen

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

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 el diseño

  <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> 
  • Android ActionBar / ActionBarSherlock múltiples opciones spinner
  • Android: la lista desplegable / selección de Spinner no se muestra
  • Spinner Tamaño Pequeño
  • Android Spinner utilizando ArrayList <String>
  • Creación de un menú desplegable desde un archivo .json
  • Selección de Android Spinner
  • Ayuda con la sincronización de la selección del hilador
  • Obtener el valor String de un Spinner respaldado por CursorAdapter de la consulta SQL en Android
  • Por que enNo se selecciona ningunoSeleccionado
  • Android Spinner OnItemSelected no se llama con el mismo elemento
  • Android Spinner cambia dinámicamente artículos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.