【问题标题】:Android TableLayout weights are not exactAndroid TableLayout 权重不准确
【发布时间】:2011-03-15 04:13:05
【问题描述】:

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

【问题讨论】:

    标签: android tablelayout


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      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 >
      

      至于确切的像素尺寸,我完全知道不建议这样做,我只是在测试行如何缩放并以它为例来显示我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-14
        • 1970-01-01
        • 1970-01-01
        • 2016-10-19
        • 1970-01-01
        相关资源
        最近更新 更多