更改单选按钮的颜色

我正在开发一个基于测验的应用程序。 将有1个问题和4个选项(单选按钮)。 如果用户选择了任何错误答案,那么我想将该单选按钮颜色变为红色。 这个怎么做?

刚刚来展示一些真正帮助我的东西:

每个人都在谈论如何使用色调以及如何使用colorAccent,但是,这不适用于API小于21的手机。

所以,真正解决这个或至少是帮助我的是使用android.support.v7.widget.AppCompatRadioButton而不是RadioButton

在你的布局上,你可以使用: app:buttonTint="@color/yourColor"

没有得到关于视图的compat的警告或问题。

而且,你不要忘记添加:

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

到您的布局父级或您的小部件。

编辑

@aselims提到评论说app命名空间中没有buttonTint

所以……这是我目前的解决方案风格:

  

最快的方法是将buttonTint设置为您想要的颜色:

   

在你的values/colors.xml你的颜色在这种情况下是偏红的:

 #e75748 

结果:

彩色Android单选按钮

正如@smashing指出的那样,这只适用于API级别> = 21

要以编程方式更改RadioButton按钮颜色,并在api级别<21上工作,应使用AppCompatRadioButton而不是RadioButton

(否则将警告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

     

这个网站非常适合自定义Android组件: android-holo-colors

只需选择单选按钮,使颜色变红,下载并在项目中使用它!

在drawable / radio_button.xml文件夹下为您创建一个可绘制的选择器单选按钮,并提及单选按钮的所有必需状态。

            

并为您的单选按钮指定android:button =“@ drawable / radio_button”

别忘了为单选按钮的不同状态添加相应的图像。

 //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)); 

你只能将ColorStateList objets作为radioButton的颜色,如果你使用valueOf它只会使用一种颜色。

希望这会有所帮助:>

您可以在单选按钮上执行向后兼容的色调

XML:

  

或者java:

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

创建一个图像!像这样 并将其放在您的drawable文件夹中..称之为,

  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'); } }); } 

希望这可以帮助..

  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} 

对我来说它的工作。