我可以为布局设置多个布局吗?

时间:2012-06-23 04:51:55

标签: android android-layout android-linearlayout

我正在进行动态布局,并在线性布局中添加组件。组件数量也是动态的。

当线性布局方向为水平时,项目将水平添加,垂直项目垂直添加。

现在我可以先将物品平铺,然后垂直放置,就像物品垂直填充一样。

或者我可以使用任何其他布局来满足我的需要。

喜欢这个enter image description here

1 个答案:

答案 0 :(得分:1)

您绝对可以拥有多个方向的嵌套LinearLayout元素。例如:

<LinearLayout 
    android:id="@+id/main_layout"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/firstRow"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:orientation="horizontal" >
        ...
    </LinearLayout>

    <LinearLayout
        android:id="@+id/secondRow"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:orientation="horizontal" >
        ...
    </LinearLayout>

    <LinearLayout
        android:id="@+id/thirdRow"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:orientation="horizontal" >
        ...
    </LinearLayout>
</LinearLayout>

使用这样的结构可以构建您描述的布局。

对于动态行,您可以执行以下操作:

<强> layout_row.xml

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

<强> MainActivity.java

mainLayout = (LinearLayout) findViewById(R.id.main_layout);

// for each dynamic row you can inflate a new view and add it
dynamicRow1 = getLayoutInflater.inflate(R.layout.layout_row, null);
mainLayout.addView(dynamicRow1);

dynamicRow2 = getLayoutInflater.inflate(R.layout.layout_row, null);
mainLayout.addView(dynamicRow2);

dynamicRow3 = getLayoutInflater.inflate(R.layout.layout_row, null);
mainLayout.addView(dynamicRow3);

在每一行中,您都可以使用相同类型的逻辑以编程方式添加需要创建的动态视图。