可以这样做:表格内的无线电组中的可变数量的单选按钮?

时间:2010-09-09 03:44:21

标签: android

我目前有代码在表中创建行,该表在第1列中包含一个字符串,在第2列中包含一个RadioButton。

这些行可以有多个变量。这一切都很好,但我想将它们添加到RadioGroup,因此一次只能切换一个按钮。

当我尝试将动态RadioButton添加到RadioGroup后我将其添加到表行时,我收到一条错误消息,指出该子(RadioButton)已经有父。我同意,它确实有一个,TableRow。

我的问题是,您是否可以将单选按钮连接到一行中的无线电组,或者我应该只编写自己的切换机制并避免将RadioGroup放在一起?我的意思是,我可以编码onClick来取消所有其他单选按钮,但如果我可以使用RadioGroup中的构建,我宁愿不这样做。

这是布局:

                <ScrollView
                    android:id="@+id/ScrollViewModifyGroups"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:scrollbars="vertical">
                    <TableLayout
                        android:id="@+id/TableLayout_ModifyGroups"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:stretchColumns="*">
                        <TableRow>
                            <RadioGroup
                                android:id="@+id/radiogroup"
                                android:layout_width="fill_parent"
                                android:layout_height="wrap_content"
                                android:orientation="vertical">
                             </RadioGroup>
                        </TableRow>

                    </TableLayout>
                </ScrollView>

以下是我正在做的Java代码片段:

  TableLayout modifyGroupTable = (TableLayout)findViewById(R.id.TableLayout_ModifyGroups);

  RadioButton groupButton = new RadioButton(this);

  insertGroupRow(modifyGroupTable, "SOME ID", groupButton);




    private void insertGroupRow(final TableLayout groupTable, String groupName, RadioButton radioButton)
    {
        final TableRow newRow = new TableRow(ReplayerCreateGroupsActivity.this);

        int textColor = getResources().getColor(R.color.title_color);
        float textSize = getResources().getDimension(R.dimen.help_text_size);

        addTextToRowWithValues(newRow, groupName, textColor, textSize);

        newRow.addView(radioButton);         

        groupTable.addView(newRow);

        try
        {
         radioGroup.addView(radioButton);
        }
        catch(Exception e)
        {
         e.printStackTrace();

        }
    }

3 个答案:

答案 0 :(得分:0)

RadioButtons只能存在于RadioGroup内。

答案 1 :(得分:0)

实际上我在创建一个RadioGroup之前就已经创建了RadioButtons,所以我不确定你的意思。

按钮显示得非常完美,然后我将RadioGroup添加到布局XML和代码之后,以获得按钮点击的独家性。

答案 2 :(得分:0)

看起来RadioGroup必须在物理上包含所有的RadioButton才能工作,所以你不能让它们在表行中分开。

我认为您必须编写自己的分组代码,或者更改构建视图的方式。你可以有一个垂直的RadioGroup来保存按钮,并在其他容器中包含文本视图,但你必须并行跟踪它们,并找出保持文本和按钮对齐的好方法。