Android: establece el color de CheckBox

He buscado en varios lugares y no parezco capaz de descifrar el cuadro de Checkable para el borde de la checkbox. ¿Alguien puede señalarme en la dirección correcta?

Aquí es lo que parece sin marcar (apenas se puede ver el cuadro)

enter image description here

Aquí está el estado verificado

enter image description here

Esto es lo que trato de hacer para que se vea.

enter image description here

Puede usar un archivo xml de checkbox personalizado para esto. Guarde el siguiente código xml en la carpeta de custom_checkbox.xml , custom_checkbox.xml nombre custom_checkbox.xml :

            

Luego use este archivo como fondo de su checkbox de esta manera:

   

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

CheckBox sin marcarCasilla de verificación marcada

El mismo problema también ocurre cuando utiliza el tema Holo Dark para la actividad y el fondo blanco. Entonces la checkbox tiene estilo oscuro. La solución simple es establecer directamente el fondo de la Holo Light de Android:

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

Puede encontrar una gran visión general de cómo funcionan todas estas cosas 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 (a la vez que se asegura de tener un respaldo para las API anteriores en values/styles.xml :

   

Luego solo tienes que aplicar el estilo a tu checkbox en tu diseño:

  

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

Ok, lo siento, pero la mayoría de estas respuestas están incompletas o tienen alguna falla menor en ellas. Controles ‘estilo’ a través de diferentes versiones de Android es un dolor épico en el culo. Después de tirarme de los pelos durante días en un proyecto con restricciones de diseño muy estrictas, finalmente fracasé y escribí una aplicación de prueba y luego profundicé y probé las diversas soluciones para diseñar interruptores y casillas de verificación, ya que cuando un diseño tiene uno con frecuencia tiene el otro. Esto es lo que encontré …

Primero: en realidad no puedes aplicarles un estilo a ninguno de ellos, pero puedes aplicar un tema a todos ellos, o solo a uno de ellos.

Segundo: puede hacerlo todo desde XML y no necesita un segundo valor-v21 / styles.xml.

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

  1. Puede usar un SwitchCompat y podrá hacer que se vea igual en todas las plataformas.
  2. Puedes usar un Switch y podrás tematizarlo con el rest de tu tema, o simplemente con ese interruptor en particular y en las versiones anteriores de Android verás un antiguo interruptor cuadrado sin estilo.

Ok ahora para el código de referencia simple. Nuevamente, si crea un simple Hello World! y suelta este código en el que puedes jugar al contenido de tu corazón. Todo eso es placa de caldera aquí, así que solo voy a incluir el XML para la actividad y el estilo …

activity_main.xml …

  

                         

styles.xml …

        

Lo sé, lo sé, eres demasiado flojo para construir esto, solo quieres que se escriba tu código. Lo entiendo. Esto es lo que parece cuando lo ejecutas …

API_21:

API 21

API_18:

API18

Está especificado por los elementos extraíbles: 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”

  

Para el soporte de la versión anterior, use la biblioteca AppCompatCheckBox of V7

aplicación: buttonTint = “@ color / YOUR_COLOR”

  

Esta será la forma más eficiente.

android: buttonTint = “@ color / black”