如何以编程方式声明页面的一部分

时间:2011-08-06 00:56:32

标签: android xml

如果我有一个页面,其布局由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");

}

2 个答案:

答案 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