personalizado ejemplo android checkbox android-dialog android-theme android-styles

android - ejemplo - Estilo personalizado de casilla de verificación en el cuadro de diálogo



alertdialog android ejemplo (3)

Estoy construyendo un diálogo con elementos de opción múltiple (casillas de verificación):

AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMultiChoiceItems(arrayResource, selectedItems, new DialogInterface.OnMultiChoiceClickListener() { // ... }); AlertDialog dialog = builder.create(); dialog.show();

Y tengo un estilo personalizado para casillas de verificación:

<style name="CustomCheckBox" parent="@android:style/Widget.CompoundButton.CheckBox"> <item name="android:button">@drawable/btn_check</item> <item name="android:textColor">@android:color/holo_purple</item> </style>

Funciona perfectamente cuando se aplica a casillas de verificación individuales en el diseño, configurando style="@style/CustomCheckBox" .

Pero, ¿cómo puedo aplicar este estilo al diálogo creado? O alternativamente para todo el tema ...

Si de alguna manera es relevante, estoy usando minSdkVersion=14 y targetSdkVersion=19 .

Actualizar:

Ahora, de acuerdo con la respuesta de MattMatt, estoy aplicando un estilo de casilla de verificación personalizado para todo el tema, y ​​también la configuración de un estilo personalizado para los cuadros de diálogo:

<style name="AppTheme" parent="AppBaseTheme"> <item name="android:checkboxStyle">@style/CustomCheckBox</item> <item name="android:dialogTheme">@style/CustomDialog</item> <item name="android:alertDialogTheme">@style/CustomDialog</item> </style> <style name="CustomCheckBox" parent="@android:style/Widget.CompoundButton.CheckBox"> <item name="android:button">@drawable/btn_check</item> <item name="android:checkMark">@drawable/btn_check</item> </style> <style name="CustomDialog" parent="@android:style/Theme.Holo.Light.Dialog"> <item name="android:checkboxStyle">@style/CustomCheckBox</item> <item name="android:background">#aaf</item> </style>

Ahora cualquier casilla de verificación agregada al diseño obtiene el estilo personalizado, y puedo cambiar el fondo del diálogo, pero las casillas de verificación en el cuadro de diálogo no se ven afectadas de ninguna manera ...


Todo lo que está buscando se puede encontrar en Temas y Estilos de los documentos , y aplicar los atributos de su tema con los atributos encontrados en Android attrs docs.

Para hacerlo más fácil, siga este ejemplo:

<style name="myTheme" parent="@android:Theme.Holo"> <!-- override default check box style with custom checkBox --> <item name="android:checkBoxStyle">@style/CustomCheckBox</item> </style> <style name="CustomCheckBox" parent="@android:style/Widget.CompoundButton.CheckBox"> <item name="android:button">@drawable/btn_check</item> <item name="android:textColor">@android:color/holo_purple</item>

Ahora, siempre que "myTheme" esté configurado en Activity, tiene una casilla de verificación personalizada;)

Espero que esto ayude, ¡feliz codificación!


puede establecer los modelos para todos los estados de casilla de verificación. Los drawables pueden ser imágenes o formas, por lo que puede establecer cualquier fondo que desee tener.

1> crea dos archivos png para los estados cb checked y unchecked como los desees y guárdalos en la carpeta dibujable de tu aplicación.

2> ahora haga un archivo customdrawble.xml de la siguiente manera:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" android:drawable="@drawable/yourdrawable1" /> <item android:state_checked="true" android:drawable="@drawable/yourdrawable2" /> <item android:drawable="@drawable/yourdrawable1" /> <!-- default --> </selector>

3> ahora haga su casilla de verificación de la siguiente manera:

<CheckBox android:id="@+id/chk" android:button=“@drawable/customdrawable” android:layout_alignParentLeft="true" android:layout_width="wrap_content" android:layout_height="wrap_content" />

la solución funcionó para mí para cambiar la pantalla de casilla de verificación única


En realidad, llamar a setMultiChoiceItems no da como resultado widgets CheckBox, sino widgets CheckedTextView. [Actualizado] También parece que cambiar el valor del atributo checkMark no tiene ningún efecto. Sin embargo, al cambiar el valor del atributo listChoiceIndicatorMultiple para el estilo CustomDialog, pude cambiar el dibujo para las opciones. Me gusta esto:

<style name="CustomDialog" parent="@android:style/Theme.Holo.Light.Dialog"> <item name="android:listChoiceIndicatorMultiple">@drawable/btn_check</item> <item name="android:background">#aaf</item> </style>

Lo descubrí mirando el código fuente de Android y descubriendo que la plantilla utilizada para los elementos de opción múltiple en el cuadro de diálogo es esta:

https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/select_dialog_multichoice_holo.xml