Android TableLayout - 相等的宽度和相等的单元格高度 - 不起作用,为什么

时间:2014-02-15 18:12:21

标签: java android android-layout android-view android-tablelayout

我有TableLayout,我想将按钮作为单元格。所有按钮应具有相同的宽度。并且所有按钮应具有相同的高度。 (因为我想填满屏幕,重量和高度会有所不同。)

我确信我做的一切都很正确但不幸的是只有宽度是一样的。问题在于高度 - 前两行具有相同的高度,第三行较小(或者更准确地说,只要按钮不包含任何文本,高度相同,但是当我放置文本时,高度不相等)。我无法相信它不起作用所以我甚至进行了屏幕截图,我在图形程序中检查了距离。

我的表:

<TableLayout
    android:orientation="vertical" 
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:stretchColumns="*"
android:shrinkColumns="*"
android:weightSum="3"
android:padding="@dimen/dialog_margin"
>

    <TableRow 
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:stretchColumns="*"
        android:gravity="center"
        android:weightSum="2">

        <Button
            android:id="@+id/button_0"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight="1"
            />
        <Button
            android:id="@+id/button_1"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight="1"
            />

    </TableRow>

    <TableRow 
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:stretchColumns="*"
        android:gravity="center"
        android:weightSum="2">

        // buttons analogously as in previous row....
    </TableRow>

    <TableRow 
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:stretchColumns="*"
        android:gravity="center"
        android:weightSum="2">

        // buttons analogously as in previous row....
    </TableRow>

我还尝试将TableRow身高设置为match_parent。它没有帮助。

顺便说一下shrinkColums的工作方式,特别是stretchColumns的工作情况? (我有和没有shrinkColumns的版本,似乎没有区别。

2 个答案:

答案 0 :(得分:0)

我认为,在添加文字时,不可能不改变宽度。但我认为你可以试试这个。当您添加文本时,请按以下方式编写:

setText("<html>your text<html>");

它可能有所帮助,但也许文字不会以全尺寸存在

答案 1 :(得分:0)

将此用于tableLayout

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

并且每行

   <TableRow 
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:gravity="center">