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:

  1. 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:

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

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.

  • Error de StackOverflow Android / Eclipse
  • Volver a establecer una altura de TextView mediante programación
  • Establecer la sombra en TabLayout de Android
  • Set Imagen de fondo y recurso xml
  • Lista completa de los atributos del tema de color del material
  • Forma de anillo en android
  • Android forma extraíble en xml - Crear un círculo transparente en un cuadrado
  • Cómo usar las vistas (Mes, Día, Semana) de Android Stock Calendar en una aplicación personalizada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.