如果我有一个页面,其布局由XML代码指定,但我想在中间创建几个单选按钮,但是在运行时决定如何进行?我是Android的新手,所以我在黑暗中捅了一刀。这样的事情会起作用吗?
在XML中,将LinearLayout添加到页面中间的XML中,如下所示:
<LinearLayout android:id="@+id/LinLayBut"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
然后在java中这样:
public void setupRadioButtons(){
LinearLayout linLay;
linLay = (LinearLayout) findViewById(R.id.LinLayBut);
RadioGroup radGroup = new RadioGroup(this);
RadioButton radBut = new RadioButton(this);
radGroup.addView(radBut, 0);
radGroup.setText("A button");
}
答案 0 :(得分:1)
这不是构建动态UI的有效方法。最好在XML文件中定义可选布局,然后在想要使用它时对其进行充气:
public void setupRadioButtons() {
final LayoutInflater inflater =
(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout buttons =
(LinearLayout) inflater.inflate(R.layout.LinLayBut, null);
LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main);
mainLayout.addView(buttons);
}
上面的代码假定无线电组和按钮是在LinearLayout
内定义的,标识为LinLayBut
,主要布局ID为main
。
答案 1 :(得分:0)
好的,多亏了unluddite,我得到了它的工作。对于跟随线索的那些受折磨的灵魂,这里是代码。 XML没有围绕它的布局。如果我不调用该方法,则无线电组不占用垂直空间:
<RadioGroup android:id="@+id/radButGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" />
这是方法:
public void setupRadioButtons(){
RadioGroup radGroup;
radGroup = (RadioGroup) findViewById(R.id.radButGroup);
RadioButton radBut0 = new RadioButton(this);
radGroup.addView(radBut0, 0); //2nd arg must match order of buttons
radBut0.setText("one Button");
RadioButton radBut1 = new RadioButton(this);
radGroup.addView(radBut1, 1);
radBut1.setText("Two Button");
radBut1.setChecked(true); //which button is set