versiones sistema pie operativo developer definicion caracteristicas android

android - sistema - Cambiar el color de un botón de radio



android sistema operativo (10)

Estoy desarrollando una aplicación basada en un cuestionario. Habrá 1 pregunta y 4 opciones (botones de radio). Si el usuario selecciona una respuesta incorrecta, quiero cambiar el color del botón de opción a Rojo. ¿Como hacer esto?


Crea una imagen como esta y colóquelo en sus carpetas dibujables ... llámelo,

RadioButton rb=(RadioButton) findViewById(R.id.radioButton1); rb.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub rb.setButtonDrawable(R.drawable.''you image here''); } }); }


Cree un selector seleccionable para su botón de opción en la carpeta drawable / radio_button.xml y mencione todos los estados necesarios para su botón de opción.

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:state_window_focused="false" android:drawable="@drawable/radio_button_on" /> <item android:state_checked="false" android:state_window_focused="false" android:drawable="@drawable/radio_button_off" /> <item android:state_checked="true" android:state_pressed="true" android:drawable="@drawable/radio_button_on_pressed" /> <item android:state_checked="false" android:state_pressed="true" android:drawable="@drawable/radio_button_off_pressed" /> <item android:state_checked="true" android:state_focused="true" android:drawable="@drawable/radio_button_on_selected" /> <item android:state_checked="false" android:state_focused="true" android:drawable="@drawable/radio_button_off_selected" /> <item android:state_checked="true" android:drawable="@drawable/radio_button_on" /> <item android:state_checked="false" android:drawable="@drawable/radio_button_off" /> </selector>

Y especifique android: button = "@ drawable / radio_button" para su botón de radio

No te olvides de agregar las imágenes correspondientes para diferentes estados de botón de radio.


Espero que esto ayude..

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { radioButton.setButtonTintList(ContextCompat.getColorStateList(mContext, R.color.colorGris)); }else {//Do something if you have a lower version}

Para mi esta funcionando.


Este sitio es realmente bueno para personalizar componentes de Android en general: android-holo-colors.com

Simplemente elija el botón de opción, haga que el color sea rojo, descárguelo y utilícelo en su proyecto.


Lo más rápido que puedes hacer es configurar el buttonTint a tu color deseado:

<RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/radio" android:checked="true" android:buttonTint="@color/your_color"/>

En tus values/colors.xml pon tu color en este caso uno rojizo:

<color name="your_color">#e75748</color>

Resultado:

Como señaló @smashing, esto solo funcionará en el nivel de API> = 21


Para cambiar el color del botón de RadioButton programáticamente, y funciona en el nivel de api <21, debe usar AppCompatRadioButton lugar de RadioButton :

(De lo contrario, le avisará a setbuttontintlist requrie api level 21 )

import android.support.v7.widget.AppCompatRadioButton; AppCompatRadioButton radioButton = new AppCompatRadioButton(getActivity()); radioButton.setSupportButtonTintList( ContextCompat.getColorStateList(getActivity(),   R.color.single_choice_state_list));

single_choice_state_list.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:color="@color/single_choice_checked"></item> <item android:state_checked="false" android:color="@color/single_choice_unchecked"></item> </selector>


Puede realizar un tinte compatible hacia atrás en el botón de radio

XML:

<android.support.v7.widget.AppCompatRadioButton xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/radioButton" android:layout_width="wrap_content" android:layout_height="wrap_content" app:buttonTint="@color/red"/>

O java:

CompoundButton button = (CompoundButton) findViewById(R.id.radioButton); CompoundButtonCompat.setButtonTintList(button, ContextCompat.getColorStateList(this, R.color.red));


Solo vine a mostrar algo que realmente me ayudó con esto:

Todos hablan sobre cómo usar el tinte y cómo usar el colorAccent, pero esto no funcionará en teléfonos con API de menos de 21.

Entonces, la solución real en esto o al menos lo que me ayudó fue usar android.support.v7.widget.AppCompatRadioButton lugar de RadioButton

Con esto en su diseño, puede usar: app:buttonTint="@color/yourColor"

Sin recibir advertencias o problemas sobre la compatibilidad de la vista.

Y, no te olvides de añadir:

xmlns:app="http://schemas.android.com/apk/res-auto"

a su diseño padre o a su widget.

Editar :

@aselims menciona en un comentario que no hay buttonTint en el espacio de nombres de la app .

Entonces ... aquí está mi estilo actual para esta solución:

<style name="MRadioButton.Purple" parent="Widget.AppCompat.CompoundButton.RadioButton"> <item name="colorAccent">@color/youColor</item> <item name="colorControlHighlight">@color/yourColor</item> <item name="android:colorPressedHighlight">@color/yourColor</item> <item name="colorPrimaryDark">@color/yourColor</item> <item name="colorPrimary">@color/yourColor</item> <item name="colorControlActivated">@color/yourColor</item> </style>


agregue estas dos propiedades en su estilo que está usando en el manifiesto con la actividad

<item name="colorControlNormal">@color/grey</item> // for state released color <item name="colorAccent">@color/blueLogo</item> //for state pressed color


//get radio button reference from layout RadioButton raPrivate = (RadioButton) layout.findViewById(R.id.radioPrivate); //parse textColor from string hex code int textColor = Color.parseColor("#000000"); //set textcolor to radioButton raPrivate.setButtonTintList(ColorStateList.valueOf(textColor));

u solo puede asignar objetos ColorStateList como color para el radioButton, si u usa valueOf solo usará un color.

Espero que esto ayude:>