Spinner personalizado con esquinas redondeadas, borde acartonado y un icono selector
Quiero que mi Spinner
tenga un gradiente de fondo negro con texto blanco a la izquierda y un icono selector a la derecha (un triángulo blanco apuntando hacia abajo). Como lo veo, hay dos maneras de hacer esto:
-
Si establezco el fondo en un recurso xml dibujable puedo hacer que mi
Spinner
parezca perfecto, pero entonces necesito agregar de alguna manera el triángulo blanco en la derecha, que no sé cómo ir alrededor:- Android- Cómo implementar la barra de progreso de pasos horizontales
- El botón Ejecutar Eclipse no funciona cuando se selecciona el archivo xml de Android
- ¿Cómo quitar el borde solamente de un lado del elemento?
- Ajustar el conjunto dibujable a android: windowBackground
- Reproducción y pausa de vídeo en pantalla
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:startColor="#343434" android:endColor="#171717" android:angle="270" /> <stroke android:width="1dp" android:color="#ffffff" /> <corners android:radius="4dp" /> <padding android:left="3dp" android:top="3dp" android:right="3dp" android:bottom="3dp" /> </shape> </item> </selector>
-
Crear una imagen de 9 parches que incluye el triángulo y luego utilizar xml para redondear las esquinas y añadir un trazo a la imagen. He tenido un ir en esto pero fue incapaz de hacer que funcione:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/spinnerblack" > <stroke android:width="1dp" android:color="#ffffff" /> <corners android:radius="3dp" /> <padding android:left="3dp" android:top="3dp" android:right="3dp" android:bottom="3dp" /> </item> </selector>
¿Podría alguien decirme lo que puedo hacer para el método 1 o lo que he hecho mal en el método 2? Preferiría no tener que agregar el movimiento y las esquinas redondeadas en mi imagen del 9-remiendo porque no pienso que parece nunca tan bueno. También, yo preferiría el método 1 al método 2. Cualquier ayuda muy apreciada.
- Descripción de los atributos XML para paquetes personalizados
- Reproductor multimedia reproducir pausa en android
- Android inhabilita el grupo de radio en xml
- Radio de degradado como porcentaje del tamaño de la pantalla
- ShowAsAction = "always" se ignora en la barra de herramientas
- Forma personalizada Linearlayout con lado curvo en android
- Establecer layout_column y layout_row en GridLayout mediante programación
- Vista con fondo sólido y sombras internas superiores + inferiores
He hecho algo similar al método 1 en mi aplicación. Básicamente, usted necesita para combinar su selector con una lista de capas:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <layer-list> <item> <shape> <gradient android:startColor="#343434" android:endColor="#171717" android:angle="270" /> <stroke android:width="1dp" android:color="#ffffff" /> <corners android:radius="4dp" /> <padding android:left="3dp" android:top="3dp" android:right="3dp" android:bottom="3dp" /> </shape> </item> <item android:top="12dp" android:right="15dp"> <bitmap android:src="@drawable/arrow_bitmap" android:gravity="top|right" /> </item> </layer-list> </item> </selector>
En mi xml también agregé una tercera capa que contiene una <shape>
que es invisible (es decir, su alpha está puesto a 0) pero agrega relleno.
- Comportamiento extraño utilizando el operador ternario de Java en Android
- Seguimiento GPS eficiente en energía