programacion - spinner android developer
Android: dibujar un botón como un spinner (5)
Tengo una vista personalizada de Android que se extiende ''Botón'' y actúa como un girador de niveles múltiples: cuando se presiona, muestra una serie de diálogos similares a los giradores que permiten al usuario refinar su selección. En este caso, le permite al usuario seleccionar el día, luego la hora, luego el minuto (en intervalos de 5 minutos) en que desea 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 presionando el botón, y creo que el aspecto de un girador es exactamente lo que necesito para hacerlo. Quiero que la apariencia sea la misma que otras hilanderas en el dispositivo, y poder cambiar fácilmente el texto en el botón, pero no estoy seguro de cómo lograrlo sin que sea una tontería. ¿Cómo debo hacer para mostrar un botón como un icono similar a un girador que es consistente con otros giradores en el dispositivo?
Así es como logré dibujar un botón que tiene el estilo de 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 obtener más estilos, eche un vistazo al 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 dibujable de fondo como "btn_dropdown".
public DateAndTimePicker(Context context) {
super(context);
this.setBackgroundResource(android.R.drawable.btn_dropdown);
}
Se ve igual que los botones giratorios, ninguno de los comportamientos de los botones ha cambiado y el texto del botón se centra correctamente.
Esta es mi solución de botón de dibujo 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 hilandero.
<!-- **** 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 dibujable que se parezca al spinner. Hice esto creando una imagen de 9 parches para el hilandero, colocándola en mi carpeta res / drawable y luego agregando un estilo para mi botón de giro personalizado:
<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 para su diseño:
<Button
android:id="@+id/okButton"
style="@style/DialogSpinner"
android:textColor="#a6a2a2"
android:text="something"
/>