Android: Establecer el color de CheckBox

He buscado un número de lugares y no parece ser capaz de averiguar el CheckBox dibujable para el borde de la casilla de verificación. ¿Puede alguien señalarme en la dirección correcta?

Esto es lo que parece que no está marcado (Apenas se puede ver la caja)

Introduzca aquí la descripción de la imagen

Aquí está el estado marcado

Introduzca aquí la descripción de la imagen

Aquí es lo que estoy tratando de hacer que parezca.

Introduzca aquí la descripción de la imagen

Puede utilizar un archivo xml de la casilla de verificación personalizada para esto. Guarde el código xml a continuación en la carpeta custom_checkbox.xml , custom_checkbox.xml nombre custom_checkbox.xml :

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

A continuación, utilice este archivo como fondo de su casilla de verificación como esta:

  <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:button="@drawable/custom_checkbox" android:id="@+id/checkBox" /> 

Aquí estoy subiendo mis propias imágenes que utilicé en lugar de cbchk_blue y cbunchk_blue

Casilla de verificación no marcadaCheckBox comprobado

El mismo problema también ocurre cuando usas el tema Holo Dark for Activity y fondo blanco. Por lo tanto, la casilla de verificación tiene un estilo oscuro. La solución simple es el fondo directamente establecido de la luz de Holo de Android:

 int id = Resources.getSystem().getIdentifier("btn_check_holo_light", "drawable", "android"); checkBox.setButtonDrawable(id); 

Usted puede encontrar una gran visión general de cómo todas estas cosas funcionan en la siguiente respuesta: https://stackoverflow.com/a/10139809/1170154

Desde Android 5 y API nivel 21 es posible elegir libremente los colores de las casillas de verificación (y muchos otros widgets). Agregue lo siguiente a sus values-v21/styles.xml (asegurándose de que tiene un fallback para las API anteriores en values/styles.xml :

 <style name="CustomCheckBox"> <item name="android:theme">@style/CheckBoxAppTheme</item> </style> <style name="CheckBoxAppTheme"> <item name="android:colorAccent"> @color/theFillColorInCheckedState </item> <item name="android:colorControlNormal"> @color/theBorderColorInUncheckedState </item> <item name="android:colorControlHighlight"> @color/theBackgroundColorWhenFocusingTheCheckBox </item> </style> 

Entonces solo tienes que aplicar el estilo a tu casilla de verificación en tu diseño:

 <CheckBox style="@style/CustomCheckBox" /> 

Eso es todo, las casillas de verificación aparecen en tus colores favoritos!

Ok, así que lo siento, pero la mayoría de estas respuestas son incompletas o tienen algún error menor en ellos. El estilo de los controles a través de diferentes versiones de Android es un dolor épico en el culo. Después de tirar de mi cabello por días en un proyecto con restricciones de diseño muy apretado finalmente me rompí y escribió una aplicación de prueba y luego realmente cavado y probado las diversas soluciones por ahí para cambiar el estilo y checkboxes, ya que cuando un diseño tiene uno Frecuentemente tiene el otro. Esto es lo que encontré …

Primero: En realidad no puedes diseñar ninguno de ellos, pero puedes aplicar un tema a todos ellos, o simplemente uno de ellos.

Segundo: puedes hacerlo todo desde XML y no necesitas un segundo valores-v21 / styles.xml.

Tercero: cuando se trata de switches tienes dos opciones básicas si quieres soportar versiones anteriores de Android (como estoy seguro que lo haces) …

  1. Puede utilizar un SwitchCompat y podrá hacer que se vea igual en todas las plataformas.
  2. Usted puede utilizar un Switch y usted podrá tema él con el resto de su tema, o apenas ese interruptor particular y en versiones más viejas de Androide usted apenas verá un interruptor cuadrado viejo unstyled.

Ok ahora para el código de referencia simple. ¡Una vez más si usted crea un mundo Hello simple! Y deje caer este código en usted puede jugar a su contenido de los corazones. Todo eso es caldera placa aquí por lo que sólo voy a incluir el XML para la actividad y el estilo …

Activity_main.xml …

 <?xml version="1.0" encoding="utf-8"?> 

 <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.kunai.switchtest.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="'Styled' SwitchCompat" /> <android.support.v7.widget.SwitchCompat android:id="@+id/switch_item" android:layout_width="wrap_content" android:layout_height="46dp" android:layout_alignParentEnd="true" android:layout_marginEnd="16dp" android:checked="true" android:longClickable="false" android:textOff="OFF" android:textOn="ON" app:switchTextAppearance="@style/BrandedSwitch.text" app:theme="@style/BrandedSwitch.control" app:showText="true" /> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.kunai.switchtest.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Themed SwitchCompat" /> <android.support.v7.widget.SwitchCompat android:id="@+id/switch_item2" android:layout_width="wrap_content" android:layout_height="46dp" android:layout_alignParentEnd="true" android:layout_marginEnd="16dp" android:checked="true" android:longClickable="false" /> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.kunai.switchtest.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Themed Switch" /> <Switch android:id="@+id/switch_item3" android:layout_width="wrap_content" android:layout_height="46dp" android:layout_alignParentEnd="true" android:layout_marginEnd="16dp" android:checked="true" android:longClickable="false" android:textOff="OFF" android:textOn="ON"/> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.kunai.switchtest.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="'Styled' Switch" /> <Switch android:id="@+id/switch_item4" android:layout_width="wrap_content" android:layout_height="46dp" android:layout_alignParentEnd="true" android:layout_marginEnd="16dp" android:checked="true" android:longClickable="false" android:textOff="OFF" android:textOn="ON" android:theme="@style/BrandedSwitch"/> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.kunai.switchtest.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="'Styled' CheckBox" /> <CheckBox android:id="@+id/checkbox" android:layout_width="wrap_content" android:layout_height="46dp" android:layout_alignParentEnd="true" android:layout_marginEnd="16dp" android:checked="true" android:longClickable="false" android:theme="@style/BrandedCheckBox"/> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.kunai.switchtest.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Themed CheckBox" /> <CheckBox android:id="@+id/checkbox2" android:layout_width="wrap_content" android:layout_height="46dp" android:layout_alignParentEnd="true" android:layout_marginEnd="16dp" android:checked="true" android:longClickable="false"/> </RelativeLayout> 

Styles.xml …

 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">#3F51B5</item> <item name="colorPrimaryDark">#303F9F</item> <item name="colorAccent">#FF4081</item> </style> <style name="BrandedSwitch.control" parent="Theme.AppCompat.Light"> <!-- active thumb & track color (30% transparency) --> <item name="colorControlActivated">#e6e600</item> <item name="colorSwitchThumbNormal">#cc0000</item> </style> <style name="BrandedSwitch.text" parent="Theme.AppCompat.Light"> <item name="android:textColor">#ffa000</item> <item name="android:textSize">9dp</item> </style> <style name="BrandedCheckBox" parent="AppTheme"> <item name="colorAccent">#aaf000</item> <item name="colorControlNormal">#ff0000</item> </style> <style name="BrandedSwitch" parent="AppTheme"> <item name="colorAccent">#39ac39</item> </style> 

Sé, lo sé, usted es demasiado perezoso para construir esto, sólo desea obtener su código escrito. Lo entiendo. Esto es lo que parece cuando lo ejecutas …

API_21:

API 21

API_18:

API18

Se especifica por los elementos esbozables: android.R.drawable.checkbox_off_background y android.R.drawable.checkbox_on_background

Puede establecer el color CHECKBOX como este API21 y superior

Android: buttonTint = "@ color / YOUR_COLOR"

 <CheckBox android:layout_height="wrap_content" android:layout_width="match_parent" android:buttonTint="@color/YOUR_COLOR" /> 

Para el apoyo de la versión más antigua use AppCompatCheckBox de la biblioteca V7

App: buttonTint = "@ color / YOUR_COLOR"

 <android.support.v7.widget.AppCompatCheckBox android:layout_height="wrap_content" android:layout_width="match_parent" app:buttonTint="@color/YOUR_COLOR" /> 

Esta será la manera más eficiente.

Android: buttonTint = "@ color / black"

  • Diseño personalizado que redondea las esquinas de su contenido
  • Match_parent altura dentro de la disposición con wrap_content altura
  • Textview setCompoundDrawables no cambiar o mostrar
  • Línea de archivo XML binario # 2: Error al inflar la clase <unknown>
  • AutoCompleteTextView quitar / cambiar el divisor de color
  • ¿Por qué mi hilandero es tan horrible?
  • Carpeta extraíble android para pantallas grandes
  • Establecer el color de enfoque de la vista de texto mediante programación / cambiar el color de enfoque en los temas
  • FrameLayout layout_weight de forma programática
  • Android DisplayMetrics devuelve un tamaño de pantalla incorrecto en píxeles en ICS
  • Atributos personalizados para un DialogPreference
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.