studio solo seleccionar personalizar color codigo cambiar android checkbox

android - solo - Marcando la casilla de verificación en pre v21



radio button android (5)

Por lo tanto, quiero aplicar tint a la casilla de verificación de AppCompat.

Todo funciona bien en Lollipop:

android:buttonTint="@color/purple_FF4081"

o de esta manera:

android:theme="@style/Theme.MyTheme.PurpleAccent"

Pero configurar cualquiera de estos parámetros no cambia nada en pre-Lollipop. Funciona solo si configuro colorAccent para el tema de la aplicación. Pero no quiero que todos los widgets cambien su apariencia, solo una casilla de verificación. ¿Hay alguna manera de hacer esto sin configurar los colores dibujables?


He intentado todas las respuestas, pero solo esta me funciona, agregue atttribute colorControlNormal y colorControlActivated para basar el estilo de toda la actividad (o aplicación) quitar el tema de su controlador

aqui es ejemplo

<style name="AppTheme" parent="AppTheme.Base"/> <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> <!-- colorPrimary is used for the default action bar background --> <item name="colorPrimary">@color/colorPrimary</item> <!-- colorPrimaryDark is used for the status bar --> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <!-- colorAccent is used as the default value for colorControlActivated, which is used to tint widgets --> <item name="colorAccent">@color/colorAccent</item> <!-- to hide white screen in start of window --> <item name="android:windowIsTranslucent">true</item> <item name="colorControlNormal">@color/orange_two</item> <item name="colorControlActivated">@color/pumpkin_orange</item> </style>

Su mainfest

<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> // here is the style used <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>


Necesitaba hacerlo programáticamente, después de cavar por un tiempo finalmente encontré esta solución (probada en Kitkat y Marshmallow), solo la publicaré en caso de que ayude a alguien:

public static void setAppCompatCheckBoxColors(final AppCompatCheckBox _checkbox, final int _uncheckedColor, final int _checkedColor) { int[][] states = new int[][]{new int[]{-android.R.attr.state_checked}, new int[]{android.R.attr.state_checked}}; int[] colors = new int[]{_uncheckedColor, _checkedColor}; _checkbox.setSupportButtonTintList(new ColorStateList(states, colors)); }


Puedes colorear directamente en el xml. Use buttonTint para el cuadro: (a partir del nivel de API 23)

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

También puede hacer esto usando appCompatCheckbox v7 para las API más antiguas:

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


Rápidamente, todo esto ha cambiado ahora después de la introducción de AppCompatActivity y las nuevas bibliotecas de soporte, para referencia (aquí se describe de manera hermosa) se puede teñir una casilla de verificación usando el atributo de theme y configurando colorControlNormal y colorControlActivated :

styles.xml

<style name="MyCheckBox" parent="Theme.AppCompat.Light"> <item name="colorControlNormal">@color/indigo</item> <item name="colorControlActivated">@color/pink</item> </style>

xml de diseño:

<CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="Check Box" android:theme="@style/MyCheckBox"/>


EDITAR 28/8/16: La respuesta a continuación ya no es correcta. Vea la respuesta aceptada en la nueva forma en que Google ha permitido teñir en dispositivos pre-v21 con la biblioteca appcompat.

Respuesta original:

La respuesta corta es no. Será necesario crear elementos dibujables personalizados para usar en dispositivos pre-v21. Esto se debe a que los widgets especiales que tienen en cuenta el tinte están actualmente ocultos porque son un detalle de implementación inacabado en este momento (lo que Google indica que esto puede cambiar en el futuro, de acuerdo con su blog de desarrolladores en la sección de Preguntas frecuentes)

Hay dos escenarios en los que puede anular el colorAccent que puede funcionar:

  • Tenga su propia versión personalizada del widget (es decir, ha extendido EditText)
  • Crear el EditText sin un LayoutInflater (es decir, llamar al nuevo EditText ()).