Android TableLayout权重并不准确

时间:2011-03-14 06:21:00

标签: android tablelayout

在下面的布局中,我希望行具有精确的高度第一行178px和接下来的两个71px。相反,我得到了一些额外像素的底部两个。我做错了什么,或者表格布局不像我喜欢的那么精确?

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="480px"
    android:layout_height="320px"
    android:background="@drawable/screen"
    android:padding="0dp"
    android:layout_margin="0dp"
    android:stretchColumns="0"
    android:weightSum="320" >
    <TableRow android:layout_weight="178" android:padding="0dp" android:layout_margin="0dp">
        <TextView
          android:text=""
          android:gravity="center_horizontal"
          android:background="#99aa0000"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:padding="0dp"
           />
    </TableRow>
    <TableRow android:layout_weight="71" android:padding="0dp" android:layout_margin="0dp">
        <TextView
          android:text=""
          android:gravity="center_horizontal"
          android:background="#990000aa"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:padding="0dp"
          android:layout_margin="0dp" />

    </TableRow>
    <TableRow android:layout_weight="71" android:padding="0dp" android:layout_margin="0dp">
        <TextView
          android:text=""
          android:gravity="center_horizontal"
          android:background="#9900aa00"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:padding="0dp"
          android:layout_margin="0dp"
          />
    </TableRow>
</TableLayout>
</blink> 

2 个答案:

答案 0 :(得分:0)

您的权重用于分发额外空间,而非所有空间。尝试为每个android:layout_height="0px"设置TableRow;这将使额外的空间320像素。您还可以消除每个android:layout_width中视图的android:layout_heightTableRow属性(它们被TableRow覆盖)。

顺便说一句,指定精确的像素尺寸(0除外)通常是个不好的主意;它不会扩展到不同的屏幕尺寸和/或密度。

答案 1 :(得分:0)

TableRows的layout_height也没有影响它,似乎在3.0中,TableLayout按预期工作,但旧版本很奇怪。一位朋友建议我尝试使用LinearLayout的类似方法,它实际上有效:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="480px"
    android:layout_height="320px"
    android:background="#99ff0101"
    android:padding="0dp"
    android:layout_margin="0dp"
    android:weightSum="320"
    android:orientation="vertical" >
        <TextView
          android:text=""
          android:background="#99aa0000"
          android:layout_width="fill_parent"
          android:layout_height="0px"
          android:padding="0dp"
          android:layout_weight="178"
           />
        <TextView
          android:text=""
          android:background="#990000aa"
          android:layout_width="fill_parent"
          android:layout_height="0px"
          android:padding="0dp"
          android:layout_margin="0dp"
          android:layout_weight="71"  />

        <TextView
          android:text=""
          android:background="#9900aa00"
          android:layout_width="fill_parent"
          android:layout_height="0px"
          android:padding="0dp"
          android:layout_margin="0dp"
          android:layout_weight="71" 
          />
</LinearLayout >

至于确切的像素尺寸,我完全清楚它不推荐,我只是测试行如何缩放并使用它作为示例来显示我的问题。