0

我在运行时构建布局,我必须为用户显示一个带有 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);

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

4

1 回答 1

0

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

<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);
于 2013-06-08T12:34:45.370 回答