Android: Dibujo de un botón como spinner

Tengo una vista personalizada de Android que extiende el botón y actúa como un hilandero de varios niveles – cuando se presiona muestra una serie de diálogos de tipo spinner que permiten al usuario afinar su selección. En este caso, permite al usuario seleccionar el día, luego la hora, luego el minuto (en intervalos de 5 minutos) que quieren que se produzca una recolección. Cuando el diálogo no está activo, se muestra una descripción de texto de la selección actual en el botón.

Quiero indicar visualmente que el usuario puede cambiar la selección pulsando el botón, y creo que el aspecto de un spinner es exactamente lo que necesito para él. Quiero que el aspecto de ser el mismo que otros hilanderos en el dispositivo, y ser capaz de cambiar fácilmente el texto en el botón, pero no estoy seguro de cómo lograr que sin que sea kludgy. ¿Cómo debo ir sobre la visualización de un botón como un spinner-como icono que es coherente con otros hilanderos en el dispositivo?

Así es como me las arreglé para dibujar un botón que está diseñado como un Spinner:

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Button" android:id="@+id/button" style="?android:attr/spinnerStyle" /> 

¡Eso es!

Actualizar

Algo como lo siguiente también debería funcionar:

 <style name="SpinnerButtonStyle" parent="android:Widget.Holo.Spinner"> <item name="android:textColor">@color/entry_field</item> <item name="android:textAppearance">?android:attr/textAppearanceMedium</item> </style> 

Para más estilos de echar un vistazo en el SDK, por ejemplo, sdk/platforms/android-18/data/res/values/styles.xml

Encontré una solución a mi pregunta. En el constructor de mi botón establezco el recurso de dibujo de fondo para ser "btn_dropdown".

 public DateAndTimePicker(Context context) { super(context); this.setBackgroundResource(android.R.drawable.btn_dropdown); } 

Tiene el mismo aspecto que los botones giratorios, ninguno de los botones ha cambiado y el botón se centra correctamente.

Esta es mi solución de dibujar botón como un hilandero:

 <Button android:id="@+id/my_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="12dp" android:gravity="center_vertical|left" android:enabled="true" android:text="@string/my_button_text" android:textColor="@color/my_button_color" style="@style/MyButton" /> 

Esto es parte de mi res / values ​​/ styles.xml:

 <style name="MyButton" parent="@android:style/Widget.Spinner"> </style> 

Esto es parte de mi res / values-v14 / styles.xml:

 <style name="MyButton" parent="@android:style/Widget.DeviceDefault.Light.Spinner"> </style> 

Este diseño XML hace que un botón parezca un hilador.

 <!-- **** Button styled to look like a spinner **** --> <Button android:id="@+id/btn_category" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:drawable/btn_dropdown" android:gravity="center_vertical|left" android:textSize="18sp" /> 

Puede definir el atributo android: background en su botón para usar un drawable que se parece al spinner. Hice esto creando una imagen del 9-remiendo para el hilandero, poniéndolo en mi carpeta res / drawable, y después añadiendo un estilo para mi botón del hilandero de encargo:

 <style name="DialogSpinner"> <item name="android:background">@drawable/dlg_spinner_background</item> <item name="android:textColor">#919090</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_width">wrap_content</item> <item name="android:layout_marginTop">2px</item> <item name="android:layout_marginBottom">2px</item> </style> 

Para su botón, agregue el atributo de estilo al diseño XML de su diseño:

 <Button android:id="@+id/okButton" style="@style/DialogSpinner" android:textColor="#a6a2a2" android:text="something" /> 
  • Cómo puede obtener texto de textview que se coloca en un widget en la programación de android
  • Control de brillo de la pantalla en android utilizando "Background Service"
  • ¿Por qué el teclado levanta el tabhost a la tapa?
  • Problemas con appwidget appWidgetIds (instancias reales y fantasmas de widget)
  • ¿Qué componente de visualización utiliza Google Plus App (Stream)?
  • Actualizar el widget de la aplicación en un clic en android
  • Cómo establecer las dos líneas de un ListView utilizando simple_list_item_2?
  • Cómo configurar el texto en la vista de texto de un widget
  • Android WebView no se actualiza después de que el contenido de la webview ha sido modificado por JavaScript
  • ¿Cómo habilitar / deshabilitar una aplicación Widgets en Android basado en la versión sdk?
  • ¿Mantener el punto culminante del elemento seleccionado en el fragmento?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.