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)
- Android SnackBar: error al inflar SnackbarLayout
- Crear Sub Menú en Android a través de código
- Efecto de marca para la vista de texto elemento de lista personalizada en el enfoque de tacto
- Diferentes resultados de CardView de la Biblioteca de soporte de Android en diferentes dispositivos
- Estilo de fila ListView: texto alineado a la izquierda e icono alineado a la derecha
Aquí está el estado marcado
Aquí es lo que estoy tratando de hacer que parezca.
- Diseños en diferentes modelos de móviles
- Huella digital no válida para generar la clave de Google Map para la aplicación Android
- ¿Cuál es el significado de la palabra ImageView.ScaleType = "MATRIX"?
- Insignia en BottomNavigationView
- Diferencia entre android: layout_alignParentTop y android: layout_alignParentStart
- Espaciado CheckBox es muy diferente en dos teléfonos
- Calificadores de recursos de Android -sw # dp vs -w # dp
- ¿Cuál es la forma correcta de implementar un GridViewPager en Android Wear?
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
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) …
- Puede utilizar un
SwitchCompat
y podrá hacer que se vea igual en todas las plataformas. - 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_18:
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"
- Visual studio (2015) emulador para Android no funciona – XDE.exe – Código de salida 3
- ¿Cuál es la diferencia entre los atributos background, backgroundTint, backgroundTintMode en el formato android xml?