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?
- Cambiar el color de texto de Time Picker
- Tamaño de Android Widget
- Widget de Android diferente orientación vertical y horizontal
- ¿Cómo agregar un widget a la pantalla principal de Android desde mi aplicación?
- Android PreferenceScreen - ¿Puedo usarlo sin guardar las preferencias en SharedPreferences?
- ¿Cómo puedo antialias el límite del clip en el lienzo de Android?
- Dibujar el borde de desvanecimiento mediante programación
- Cómo reasignar una imagen de 9 parches mediante programación a un ImageView?
- ¿Cómo implementar widget de rueda como en el iPhone?
- Cómo guardar la imagen en la tarjeta SD en el botón Haga clic en android
- Centrar los elementos de texto en ListView
- Android establecer límites para una capa de capa de dibujar
- Copiar directorios y archivos de la carpeta res / raw a la tarjeta sd - android
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" />