Cambiar el color del círculo del botón de opción
Quiero cambiar el color del círculo de RadioButton en uno de mis proyectos , pero no puedo entender qué propiedad establecer. El color de fondo es negro, por lo que se vuelve invisible. Quiero establecer el color del círculo en blanco.
Es más sencillo simplemente configurar el color del botón Tinte (solo funciona en el nivel API 21 o superior):
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radio"
android:checked="true"
android:buttonTint="@color/your_color"/>
En tu archivo value/colors.xml , pon tu color, en este caso uno rojizo:
<color name="your_color">#e75748</color>
Resultado:
Si quieres hacerlo por código (también API 21 y superiores):
if(Build.VERSION.SDK_INT >= 21)
{
ColorStateList colorStateList = new ColorStateList(
new int[][]
{
new int[]{-android.R.attr.state_enabled}, // Disabled
new int[]{android.R.attr.state_enabled} // Enabled
},
new int[]
{
Color.BLACK, // disabled
Color.BLUE // enabled
}
);
radio.setButtonTintList(colorStateList); // set the color tint list
radio.invalidate(); // Could not be necessary
}
Actualizar:
usa este en su lugar
<android.support.v7.widget.AppCompatRadioButton android:id="@+id/rbtn_test" android:layout_width="wrap_content" android:layout_height="wrap_content" app:buttonTint="@color/primary" />
Luego agregue esta línea al diseño principal o Alt+ Enteren Android Studio para agregar automáticamente
xmlns:app="http://schemas.android.com/apk/res-auto"
Un ejemplo mínimo debería verse así:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/rbtn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/primary" />
</LinearLayout>
- En tu programa, deberías llamarlo así:
AppCompatRadioButton radioButton = (AppCompatRadioButton) view.findViewById(R.id.rbtn_test);
Básicamente, este tipo de patrón se puede aplicar a todos los tipos de AppCompact, como AppCompatCheckBox, AppCompatButton, etc.
Antigua respuesta:
Para admitir la API 21 de Android a continuación, puede usar AppCompatRadioButton. Luego use setSupportButtonTintList
el método para cambiar el color. Este es mi fragmento de código para crear un botón de opción.
AppCompatRadioButton rb;
rb = new AppCompatRadioButton(mContext);
ColorStateList colorStateList = new ColorStateList(
new int[][]{
new int[]{-android.R.attr.state_checked},
new int[]{android.R.attr.state_checked}
},
new int[]{
Color.DKGRAY
, Color.rgb (242,81,112),
}
);
rb.setSupportButtonTintList(colorStateList);
Resultado probado en API 19:
Consulte el enlace de referencia de Android para obtener más detalles.