在LinearLayout中为TableLayout设置layout_marginBottom无效

时间:2012-07-22 18:09:07

标签: android android-layout

我有一个垂直的LinearLayout (绿色矩形),我正在尝试以编程方式膨胀并将多个TableLayouts (红色矩形)插入此LinearLayout。每个tablelayout包含2个2x2排列的4个单元格。

enter image description here

除了我为TableLayout设置的任何layout_marginBottom没有效果之外,它的工作原理是正常的,红色矩形总是紧紧地包含在LinearLayout中。我想在每个表之间创建一些垂直间距。

请告知我的XML有什么问题:

的LinearLayout:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:orientation="vertical">
    <LinearLayout
        android:id="@+id/levellist"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:orientation="vertical">

    </LinearLayout>
</ScrollView>

TableLayout(动态插入)。请注意无效的layout_marginBottom:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tableLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="100dp"
    android:stretchColumns="*" >

    <TableRow
        android:id="@+id/TableRow01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <include
            android:id="@+id/levelview0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            layout="@layout/levelmenu_level" />

        <include
            android:id="@+id/levelview1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            layout="@layout/levelmenu_level" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <include
            android:id="@+id/levelview2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            layout="@layout/levelmenu_level" />

        <include
            android:id="@+id/levelview3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            layout="@layout/levelmenu_level" />
    </TableRow>

</TableLayout>

1 个答案:

答案 0 :(得分:0)

这个TableLayout中有一堆视图是相同的。我建议尝试使用GridLayout。它应该有助于内存管理和回收。但要回答你的问题,看起来你正在为整个表设置边距,而不是每一行。您是否尝试将layout_margin放在行标记中?您也可以尝试设置Padding?这样你就可以将行间距放在行内。但是,我相信你应该得到同样的效果。边距位于视图之外,填充在内部。

http://developer.android.com/reference/android/view/View.html#attr_android:paddingBottom

<TableRow
        android:id="@+id/TableRow01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="???dip">

        <include
            android:id="@+id/levelview0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            layout="@layout/levelmenu_level" />