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.
- ¿Cómo establecer el valor predeterminado de Spinner por su valor en lugar de su posición?
- Android spinner performClick onItemSelected
- Android - Eliminar Spinner Dropdown Arrow
- ¿Cómo puedo administrar la altura de los ítems de spinner android?
- Android: Cómo obtener el ID del elemento seleccionado de Spinner
- Spinner setonitemselectedlistener no se llama
- Manejo de la orientación de la pantalla del androide para spinner
- Cómo obtener Spinner valor del elemento seleccionado a la cadena?
- ¿Cómo hacer una lista emergente como un hilandero sin el hilador en androide?
- Cambiar el contenido de Spinner al abrir
- ICS Spinner ("desplegable" en lugar de diálogo) en versiones anteriores de Android
- SetOnItemClickListener no funciona con Spinner
- Establecer clave y valor en el hilador
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_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í:
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>
- Java.lang.RuntimeException: Error al entregar el resultado ResultInfo {who = null, request = 1888, resultado = 0, data = null} a la actividad
- Android – ¿Cómo descifrar y descompilar cualquier archivo APK?