在Android中选择其中一个选项时,更改radioButon的颜色

时间:2019-01-21 10:59:29

标签: android android-radiobutton android-radiogroup

我已经开发了一个动态的调查问卷用户界面,其中的问题回答为“是”或“否”。对于答案为“是/否”的问题,我选择了广播组作为用户输入。每次选择特定的radioGroup选项(是/否)时,如何更改单选按钮的颜色?我已经完成了以下实施,但无法正常工作。

 final AppCompatRadioButton[] rb = new AppCompatRadioButton[2];
 final RadioGroup rg = new RadioGroup(context); //create the RadioGroup
 rg.setOrientation(RadioGroup.HORIZONTAL);//or RadioGroup.VERTICAL
 String[] options = context.getResources().getStringArray(R.array.radio_options_yes_no);

   if (questionList.get(j).getQuestionId().matches("3|16|24"))
   {                    
        rb[0].setHighlightColor(context.getResources().getColor(R.color.red));
        rb[0].setTextColor(context.getResources().getColor(R.color.red));
   }

   //for yes as unsafe option
   else if (questionList.get(j).getQuestionId().matches("21|23|30|32")){
         rb[1].setHighlightColor(context.getResources().getColor(R.color.red));
         rb[1].setTextColor(context.getResources().getColor(R.color.red));
   }

1 个答案:

答案 0 :(得分:0)

在xml中的所有单选按钮上添加onclick

    android:onClick="onRadioButtonClicked"

现在添加onRadioButtonCliked方法

public void onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();

// Check which radio button was clicked
switch(view.getId()) {
    case R.id.radio_pirates:
        if (checked)
            // Pirates are the best
        break;
    case R.id.radio_ninjas:
        if (checked)
            // Ninjas rule
        break;
}

}

现在在这里应用您的逻辑 并使用此代码更改颜色

.setTextColor(context.getResources().getColor(R.color.red));

here
here is the link for further reading