TableLayout 列的宽度不统一

TableLayout columns are not of uniform width

我正在尝试创建如下所示的布局

以下是我的代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginTop="20dp"
    android:background="@drawable/border"
    android:clipToPadding="false"
    android:elevation="10dp"
    android:orientation="vertical"
    android:outlineProvider="bounds"
    android:paddingBottom="10dp">

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="2dp"
        android:orientation="horizontal"
        android:stretchColumns="0,1,2">

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

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="0"
                android:gravity="center_vertical"
                android:text="Proforma Inv.#" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="1"
                android:gravity="center"
                android:text="Invoice#" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_column="2"
                android:gravity="center_vertical"
                android:text="Status" />
        </TableRow>

    </TableLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#000" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="2dp"
        android:orientation="horizontal"
        android:stretchColumns="0,1,2">

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

            <TextView
                android:id="@+id/dashProformaInvoiceNo"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="PI1:4000039"
                android:textColor="#00ff00"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/dashInvoiceNo"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="INC 4000039"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/dashShippingStatus"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Cargo shipped"

                android:textStyle="bold" />
        </TableRow>

    </TableLayout>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="2dp"
        android:orientation="horizontal"
        android:stretchColumns="*">

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

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_weight="1">

                <TextView
                    android:id="@+id/textView10"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Product:"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/dashProductName"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Biomass pellet"
                    android:textStyle="bold" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_weight="1">

                <TextView
                    android:id="@+id/textView42"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Rate: "
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/dashRate"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="USD 100"
                    android:textStyle="bold" />
            </LinearLayout>
        </TableRow>


    </TableLayout>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="2dp"
        android:orientation="horizontal"
        android:stretchColumns="*">

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

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_weight="1">

                <TextView
                    android:id="@+id/textView5"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="ETD"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/dashETD"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="07 oct 2015 11.00"
                    android:textStyle="bold" />

            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_weight="1">

                <TextView
                    android:id="@+id/textView43"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Quantitiy: "
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/dashQuantity"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="600 Tons"
                    android:textStyle="bold" />

            </LinearLayout>
        </TableRow>


    </TableLayout>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="2dp"
        android:orientation="horizontal"
        android:stretchColumns="*">

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

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <TextView
                    android:id="@+id/textView7"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="ETA: "
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/dashETA"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="06 OCT 2015"
                    android:textStyle="bold" />

            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">


                <TextView
                    android:id="@+id/textView45"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Amount: "
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/dashAmount"
                    style="bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="USD 6000"
                    android:textStyle="bold" />
            </LinearLayout>
        </TableRow>


    </TableLayout>

</LinearLayout>

问题是我无法使列具有相同的宽度。我已尝试为所有线性布局设置权重,但问题仍然存在。

试试这个 *编辑我的意思是 textview

<TextView
    android:layout_width="0dp"
    android:layout_weight="1"
/>

您将环绕内容作为文本视图的布局宽度。这会干扰拉伸列。

将 table 布局中所有元素的宽度更改为

     android:layout_width="0dp"

另外,为什么要使用这么多 table 布局?您可以将所有 table 行标签放在一个 table 布局中,下面的标签也可以放在 table 布局中 table 行之间。

   <View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:layout_span="3"
    android:background="#000" />

android:layout_span="3" 将使视图跨越所有列。

当向任何布局提供 weight 时,

LinearLayout width 必须是 android:layout_width="0dp"

  <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_weight="1">

            <TextView
                android:id="@+id/textView5"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ETD"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/dashETD"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="07 oct 2015 11.00"
                android:textStyle="bold" />

        </LinearLayout>

试试这个,

TableLayout
    android:stretchColumns="*"   // Optionally use numbered list "0,1,2,3,..."
>
    <TableRow
        android:layout_width="0dp"
    >

我已经自己解决了

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="1"
    android:layout_marginLeft="3dp"
    android:layout_marginRight="3dp">

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:gravity="center_vertical"
            android:text="Proforma Inv.#" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:gravity="center"
            android:text="Invoice#" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:gravity="center_vertical"
            android:text="Status" />
    </TableRow>

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

        <TextView
            android:id="@+id/dashProformaInvoiceNo"
            style="bold"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="PI1:4000039"
            android:textColor="#00ff00"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/dashInvoiceNo"
            style="bold"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="INC 4000039"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/dashShippingStatus"
            style="bold"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cargo shipped"

            android:textStyle="bold" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow3"

        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView10"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Product:"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/dashProductName"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Biomass pellet"
                android:textStyle="bold" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView42"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Rate: "
                android:textStyle="bold" />

            <TextView
                android:id="@+id/dashRate"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="USD 100"
                android:textStyle="bold" />
        </LinearLayout>
    </TableRow>

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

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView5"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ETD"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/dashETD"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="07 oct 2015 11.00"
                android:textStyle="bold" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView43"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Quantitiy: "
                android:textStyle="bold" />

            <TextView
                android:id="@+id/dashQuantity"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="600 Tons"
                android:textStyle="bold" />

        </LinearLayout>
    </TableRow>

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

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView7"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ETA: "
                android:textStyle="bold" />

            <TextView
                android:id="@+id/dashETA"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="06 OCT 2015"
                android:textStyle="bold" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal">


            <TextView
                android:id="@+id/textView45"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Amount: "
                android:textStyle="bold" />

            <TextView
                android:id="@+id/dashAmount"
                style="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="USD 6000"
                android:textStyle="bold" />
        </LinearLayout>
    </TableRow>
</TableLayout>