Android表格布局权重不精确

Android表格布局权重不精确,android,tablelayout,Android,Tablelayout,在下面的布局中,我希望第一行的高度为178px,第二行的高度为71px。取而代之的是,我用几个额外的像素得到了底部的两个。我做错了什么,或者桌子的布局没有我喜欢的那么精确 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="480px" android:layout_height="320px" android:background

在下面的布局中,我希望第一行的高度为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> 

你的重量被用来分配额外的空间,而不是所有的空间。尝试为每个TableRow设置android:layout_height=0px;这将使额外的空间达到320像素。您还可以消除每个TableRow中视图的android:layout_width和android:layout_height属性,它们被TableRow覆盖


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

TableRows的布局高度也不会影响它,在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 >
至于确切的像素尺寸,我完全知道这不是推荐的,我只是测试行的缩放方式,并将其作为示例来显示我的问题