我正在尝试创建一个小列表(3行),其中每行上有一个RadioButton
和一个EditText
视图,水平排列。我希望radiobuttons在同一个RadioGroup
。我无法将单选按钮和编辑文本视图添加到线性布局,因为Android会对具有另一个父级的单选按钮大喊大叫。我该如何解决这个问题?
我以编程方式添加每一行:
mAnswerGroup.addView(radioButton, new RadioGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
mAnswerGroup.addView(editText, new RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
答案 0 :(得分:4)
在这种情况下,RadioGroup
将无效。您必须手动处理3 RadioButtons
的已检查更改,因为您需要创建LinearLayout并在其中添加RadioButton
和EditText
。您必须手动取消选中其他单选按钮。
设置每个RadioButton
的onCheckedChangeListener,然后手动处理:
在您的活动中实施OnCheckedChangeListener
界面,并在onCreate()
:
rb_1.setOnCheckedChangeListener(this);
rb_2.setOnCheckedChangeListener(this);
rb_3.setOnCheckedChangeListener(this);
然后,覆盖接口的onCheckedChanged()
方法:
@Override
public void onCheckedChanged(CompoundButton cb, boolean isChecked) {
if(isChecked){
//get the id of the checked button for later reference
int id = cb.getId();
/*
* do what you want here based on the id you got
*/
//uncheck the other RadioButtons
rb_1.setChecked(id == R.id.rb_1);
rb_2.setChecked(id == R.id.rb_2);
rb_3.setChecked(id == R.id.rb_3);
}
}