Cambiar el color del círculo del botón de opción

Resuelto Amandeep Singh asked hace 54 años • 27 respuestas

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.

Amandeep Singh avatar Jan 01 '70 08:01 Amandeep Singh
Aceptado

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:

Botón de radio de Android de color

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
}
Jorge Arimany avatar Apr 09 '2015 23:04 Jorge Arimany

Actualizar:

  1. 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" />
    
  2. 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>
  1. 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 setSupportButtonTintListel 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:

Este está probado en API 19.

Consulte el enlace de referencia de Android para obtener más detalles.

aknay avatar Dec 29 '2015 14:12 aknay