Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-从代码构建动态表单_Java_Android_Forms - Fatal编程技术网

Java Android-从代码构建动态表单

Java Android-从代码构建动态表单,java,android,forms,Java,Android,Forms,我必须在我的活动中构建一个动态表单,这取决于通过从XML中填充的HTTP检索到的数据 这可能是一个或多个RadioGroups,每个组正好有三个RadioButtons。在放射组之后,我需要放置两个EditText和一个CheckBox控件,然后单击submit按钮 我已经准备了一个LinearLayout,具有垂直方向和唯一ID,可以从代码中寻址,我希望我可以在Java代码中创建一个表单控件,而无需在android XML布局中定义并添加到该LinearLayout 我在谷歌上搜索了几个小时,

我必须在我的活动中构建一个动态表单,这取决于通过从XML中填充的HTTP检索到的数据

这可能是一个或多个
RadioGroup
s,每个组正好有三个
RadioButton
s。在放射组之后,我需要放置两个
EditText
和一个
CheckBox
控件,然后单击submit按钮

我已经准备了一个
LinearLayout
,具有垂直方向和唯一ID,可以从代码中寻址,我希望我可以在Java代码中创建一个表单控件,而无需在android XML布局中定义并添加到该
LinearLayout

我在谷歌上搜索了几个小时,但找不到任何例子来说明如何做到这一点

请任何人提供一些示例,说明如何使用1-2个
RadioButton
创建一个
RadioRuop
,并将其添加到
线性布局中(以XML布局准备)


谢谢你的建议

这些小部件可以像其他小部件一样创建:

final Context context; /* get Context from somewhere */
final LinearLayout layout = (LinearLayout)findViewById(R.id.your_layout);
final RadioGroup group = new RadioGroup(context);
final RadioButton button1 = new RadioButton(context);
button1.setId(button1_id); // this id can be generated as you like.
group.addView(button1,
    new RadioGroup.LayoutParams(
        RadioGroup.LayoutParams.WRAP_CONTENT,    
        RadioGroup.LayoutParams.WRAP_CONTENT));
final RadioButton button2 = new RadioButton(context);
button1.setId(button2_id); // this id can be generated as you like.
button2.setChecked(true);
group.addView(button2,
    new RadioGroup.LayoutParams(
        RadioGroup.LayoutParams.WRAP_CONTENT,    
        RadioGroup.LayoutParams.WRAP_CONTENT));
layout.addView(group,
    new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT,    
        LinearLayout.LayoutParams.WRAP_CONTENT));

我还没有测试这段代码,所以它可能包含一些错误。但我希望你能明白。

嗯,谢谢!我的代码就快到了,只是缺少了新的LinearLayout.LayoutParams(…)
part。。。但我仍然有一个问题:我正在为(int I=0;I应该在哪里创建三个文本视图,但只有一个是。。。我遗漏了什么吗???这个代码似乎是正确的。因此,我认为错误在其他地方。好的,它们似乎已被处理,但第二个和第三个文本视图只是没有“绘制”到屏幕上,即使这些控件有新的空间。。。我尝试在LinearLayout上调用
.postInvalidate()
,但没有成功。。。有什么建议吗?您确定要将此小部件添加到
LinearLayout
,而不是
FrameLayout
?无论如何,我建议您尝试层次查看器工具。这一定有帮助。好吧,我知道了。。。花了我两个小时,我觉得自己像个哑巴。。。这只是一个小小的想法-线性布局的方向。。。当我试图在一个控件下添加另一个控件时,在右边有一个位置。。。So
layout.setOrientation(LinearLayout.VERTICAL)完成了任务。。。