我目前有代码在表中创建行,该表在第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();
}
}
答案 0 :(得分:0)
RadioButtons只能存在于RadioGroup内。
答案 1 :(得分:0)
实际上我在创建一个RadioGroup之前就已经创建了RadioButtons,所以我不确定你的意思。
按钮显示得非常完美,然后我将RadioGroup添加到布局XML和代码之后,以获得按钮点击的独家性。
答案 2 :(得分:0)
看起来RadioGroup必须在物理上包含所有的RadioButton才能工作,所以你不能让它们在表行中分开。
我认为您必须编写自己的分组代码,或者更改构建视图的方式。你可以有一个垂直的RadioGroup来保存按钮,并在其他容器中包含文本视图,但你必须并行跟踪它们,并找出保持文本和按钮对齐的好方法。