当前位置: 首页 > 知识库问答 >
问题:

点击操作后Android单选按钮颜色发生变化

段弘和
2023-03-14
RadioGroup rg = new RadioGroup(context);
for (int i = 0; i < formElement.getRadioOptions().size(); i++) {
                RadioButton radiobutton1 = new RadioButton(context);
                radiobutton1.setText(formElement.getRadioOptions().get(i).getValue());
                radiobutton1.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getResources().getDimension(R.dimen.meetingNoteCL));
                radiobutton1.setHighlightColor(context.getResources().getColor(R.color.text_color));
                rg.addView(radiobutton1);
            }
            textInputLayout.setTypeface(FontUtils.getFontTypeRegular(context));
            rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    // checkedId is the RadioButton selected
                   
                    int radioButtonID = group.getCheckedRadioButtonId();
                    View radioButton = group.findViewById(radioButtonID);
                    int idx = group.indexOfChild(radioButton);
                    formElement.setKey(formElement.getRadioOptions().get(idx).getKey());
                    formElement.setValue(formElement.getRadioOptions().get(idx).getValue());

                }
            });

上面的单选按钮代码,但是在选择之后,我需要将特定的单选按钮颜色单独更改为蓝色

共有1个答案

杜良骏
2023-03-14

onCheckedChanged回调有一个check edId,您可以使用它来获取该特定按钮

您只需要在将按钮添加到组之前为它们分配唯一的ID。这是为实现这一点而修改的代码。

RadioGroup rg = new RadioGroup(context);
for (int i = 0; i < formElement.getRadioOptions().size(); i++) {
                RadioButton radiobutton1 = new RadioButton(context);

//set a unique id

radiobutton1.setId(View.generateViewId());
              radiobutton1.setText(formElement.getRadioOptions().get(i).getValue());
                radiobutton1.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getResources().getDimension(R.dimen.meetingNoteCL));
                radiobutton1.setHighlightColor(context.getResources().getColor(R.color.text_color));
                rg.addView(radiobutton1);
            }
            textInputLayout.setTypeface(FontUtils.getFontTypeRegular(context));
            rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    // checkedId is the RadioButton selected
                   
                    int radioButtonID = group.getCheckedRadioButtonId();
                    RadioButton radioButton = (RadioButton)group.findViewById(radioButtonID);

//if its checked then change it's tintlist

if(radioButton.isChecked()){
radioButton.setButtonTintList(ColorStateList.valueOf(ContextCompat.getColor(context,R.color.yourcolor)));
}
                    int idx = group.indexOfChild(radioButton);
                    formElement.setKey(formElement.getRadioOptions().get(idx).getKey());
                    formElement.setValue(formElement.getRadioOptions().get(idx).getValue());

                }
            });
 类似资料:
  • 问题内容: 我一直在尝试更改Material的“浮动动作按钮”的颜色,但没有成功。 我尝试添加: 或通过代码: 要么 但以上方法均无效。我也尝试过提出的重复问题中的解决方案,但是没有一个起作用。按钮保持绿色,并且也变成了正方形。 PS知道如何添加波纹效果也很高兴,也无法理解。 问题答案: 如文档中所述,默认情况下,它采用在styles.xml属性colorAccent中设置的颜色。 该视图的背景色

  • 一直试图点击网站上的单选按钮,但无济于事。 一直试图点击单选按钮和标签,但硒一直抛出没有这样的元素错误,我在这个阶段有点沮丧。 在实际网站上可能更容易看到: https://www.theaa.ie/car-insurance/journey/getting-started 它在输入电子邮件后的页面上。试图让一些测试用例运行,但这些单选按钮不想被点击。

  • 我一直试图改变材质的浮动动作按钮颜色,但没有成功。 我曾试图补充: 或通过代码: 或 但上述方法都不奏效。我也试过提出的重复问题中的解决方案,但都行不通;按钮保持绿色,也变成了正方形。 附注。如果知道如何添加涟漪效果也会很好,也不能理解。

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

  • 我有一个servlet java文件。这是我的代码: 3个文本输入和一个按钮。java servlet创建HTML,我需要读取3个输入的内容,当按下按钮时,我需要调用一个以3个输入为参数的函数。 谢谢你的帮助。 编辑:代码测试:

  • 如何更改searchview中黑色箭头(后退按钮)的颜色,我已尝试使用以下代码进行自定义 但它不起作用