当具有多行时,将单选按钮和EditText对齐在同一行上

时间:2013-11-03 11:02:00

标签: java android android-layout

我正在尝试创建一个小列表(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));

1 个答案:

答案 0 :(得分:4)

在这种情况下,RadioGroup将无效。您必须手动处理3 RadioButtons的已检查更改,因为您需要创建LinearLayout并在其中添加RadioButtonEditText。您必须手动取消选中其他单选按钮。

设置每个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);

        }
    }