动态UI - 如何将3个linearlayouts添加到父线性布局中

时间:2015-01-12 12:10:51

标签: android android-layout dynamic

我在创建动态UI方面遇到了一些麻烦。 我可以让它只使用一个LinearLayout但我不知道如何添加更多。

这就是我现在所拥有的,它是一个带有3个按钮的LinearLayout。

以下是代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);

        maakLayout();
    }

    private void maakLayout() {
        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.HORIZONTAL);
        LayoutParams layoutParams = new LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT);
        linearLayout.setLayoutParams(layoutParams);

        setContentView(linearLayout);

        for (int i = 0; i < 3; i++) {
            Button button = new Button(this);
            button.setText("Test");
            button.setTag(i);
            button.setBackgroundResource(R.drawable.border_red);



            LayoutParams layoutTextParams = new LayoutParams(
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT);
            // LayoutParams layoutImageParams =
            // new LayoutParams(100,100);
            layoutTextParams.topMargin = 5;
            layoutTextParams.leftMargin = 5;
            layoutTextParams.rightMargin = 5;
            button.setLayoutParams(layoutTextParams);

            linearLayout.addView(button);
        }
    }

我需要的是以下内容: What I need 而静态XML代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.test.MainActivity" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginRight="5dp"
        android:orientation="vertical" >

        <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/border_red"
        android:text="Test" />

        <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/border_red"
        android:text="Test" />

        <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/border_red"
        android:text="Test" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="144dp"
        android:layout_marginRight="5dp"
        android:orientation="vertical" >

        <Button
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@drawable/border_blue"
        android:text="Test" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/border_red"
        android:text="Test" />

        <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/border_red"
        android:text="Test" />

        <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/border_red"
        android:text="Test" />

    </LinearLayout>

</LinearLayout>

一旦我知道如何添加其他线性布局,我认为很好,谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

LinearLayout本身是View的子类,因此您可以将其作为子项添加到其他LinearLayouts

像这样:

LinearLayout horizontalLayout = new LinearLayout(this);
horizontalLayout.setOrientation(LinearLayout.HORIZONTAL);

LinearLayout verticalLayout1 = new LinearLayout(this);
verticalLayout1.setOrientation(LinearLayout.VERTICAL);
LinearLayout verticalLayout2 = new LinearLayout(this);
verticalLayout2.setOrientation(LinearLayout.VERTICAL);

horizontalLayout.addView(verticalLayout1);
horizontalLayout.addView(verticalLayout2);

只需使用按钮填充第一个和第三个垂直布局,就像在循环中一样。

希望这有帮助。