在运行时android建立Radio组

时间:2013-06-08 11:22:01

标签: android android-edittext radio-group

我正在运行时构建布局,我必须为用户显示一个带有4个单选按钮的无线电组,但有时我应该用单选按钮显示一个编辑字段,这样用户就可以编写一些相关的东西了。编辑框中的单选按钮。 我希望编辑字段出现在单选按钮旁边。 我试图构建编辑字段,但它一直显示在无线电组下,如果我用编辑文本分隔线性布局中的一个按钮,它就会超出无线电组的范围。 这是构建无线电组的代码

    RadioGroup radioGroup = new RadioGroup(context);
    radioGroup.setContentDescription(id);

     for (int i = 0; i < vector.size(); i++) {
    RadioButton radioButton = new RadioButton(context);
    radioButton.setTextColor(Color.BLACK);
    radioButton.setText("" + vector.get(i).getQ_text());

    radioButton.setContentDescription(vector.get(i).getA_id());
    radioButton.setTextSize(20);
    radioButton.setTextColor(Color.parseColor("#A5462E"));
    radioGroup.addView(radioButton);
    radioGroup.setPadding(20, 0, 0, 0);

如何在运行时构建编辑字段以显示在单选按钮旁边。

1 个答案:

答案 0 :(得分:0)

我的建议是在xml文件中为RadioGroup的每一行创建布局,如下所示:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

<RadioButton
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

<EditText
        android:id="@+id/edit_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="invisible"/>

</LinearLayout>

然后在你的循环中你可以膨胀这个布局并用它做你想做的事情:

    final LinearLayout root = (LinearLayout) findViewById(R.id.root);
    final RadioGroup radioGroup = new RadioGroup(this);
    for (int i = 0; i < 3; i++) {

        final LinearLayout item = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.item_radio_button, null);
        final RadioButton button = (RadioButton) item.findViewById(R.id.button);
        final EditText editText = (EditText) item.findViewById(R.id.edit_text);

        button.setText("Test");

        // Your condition to show or not the editText
        if (i % 2 == 0) {
            editText.setVisibility(View.VISIBLE);
        }
        radioGroup.addView(item);
    }
    root.addView(radioGroup);