Android:表格布局。在中间的行中对齐

Android: TableLayout. Align in the row at the middle

请参阅XML

<TableLayout
    android:layout_weight="0"
    android:background="@color/black"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:layout_marginStart="0dp"
    android:layout_marginTop="0dp">
    <TableRow android:orientation="horizontal" android:layout_weight="1" android:layout_height="wrap_content"></TableRow>
    <TableRow 
        android:layout_gravity="center" 
        android:orientation="horizontal" 
        android:layout_weight="1" 
        android:layout_height="wrap_content">
        <ImageButton
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/tmp0"
            android:id="@+id/startButton">
        </ImageButton></TableRow>
    <TableRow android:layout_weight="1" android:layout_height="wrap_content" android:weightSum="3"></TableRow>
</TableLayout>

将ImageButton设置在第二行中间,漏掉或错误设置了哪些属性? (垂直和水平)

如何使行高和行宽相等?

我在 question/answers 基地搜索没有成功..

============================

更新:

要将 Button 放在中间,第二行应标记如下:

<TableRow
    **android:gravity="center"**
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:weightSum="3">
    <ImageButton
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/tmp0"
        android:id="@+id/startButton">
    </ImageButton>
</TableRow>

请看看发生了什么,这当然是不正确的:

但是如何让行高相等还是不懂。

第二行现在的格式如下,但在 Designer 中与第二张图片相同

<TableRow
    android:gravity="center"
    android:layout_gravity="center"
    android:orientation="horizontal"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:layout_weight="1"
    android:weightSum="3">
    <ImageButton
        android:layout_gravity="center"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/tmp0"
        android:id="@+id/startButton">
    </ImageButton>
</TableRow>

如果我没记错的话第二行需要android:layout_width="match_parent"

更新

我认为 TableRow 不可能在整个屏幕上固定垂直,每行的高度都相同,除非您使所有 TableRow 都相同。这就是 TableLayout 和 TableRow behaves.See 这个:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:stretchColumns="*">

        <TableRow
            android:layout_weight="1"
            android:gravity="center">

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />
        </TableRow>

        <TableRow
            android:layout_weight="1"
            android:gravity="center">

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />
        </TableRow>

        <TableRow
            android:layout_weight="1"
            android:gravity="center">

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />
        </TableRow>
    </TableLayout>
</LinearLayout>

这将在垂直方向上等分你的行。

现在就这样做:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:stretchColumns="*">

        <TableRow
            android:layout_weight="1"
            android:gravity="center">

            <!--<Button-->
                <!--android:layout_width="fill_parent"-->
                <!--android:layout_height="fill_parent"-->
                <!--android:text="Button" />-->

            <!--<Button-->
                <!--android:layout_width="fill_parent"-->
                <!--android:layout_height="fill_parent"-->
                <!--android:text="Button" />-->

            <!--<Button-->
                <!--android:layout_width="fill_parent"-->
                <!--android:layout_height="fill_parent"-->
                <!--android:text="Button" />-->
        </TableRow>

        <TableRow
            android:layout_weight="1"
            android:gravity="center">

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />

            <Button
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Button" />
        </TableRow>

        <TableRow
            android:layout_weight="1"
            android:gravity="center">

            <!--<Button-->
                <!--android:layout_width="fill_parent"-->
                <!--android:layout_height="fill_parent"-->
                <!--android:text="Button" />-->

            <!--<Button-->
                <!--android:layout_width="fill_parent"-->
                <!--android:layout_height="fill_parent"-->
                <!--android:text="Button" />-->

            <!--<Button-->
                <!--android:layout_width="fill_parent"-->
                <!--android:layout_height="fill_parent"-->
                <!--android:text="Button" />-->
        </TableRow>
    </TableLayout>
</LinearLayout>

它会给第二行更多的权重。

给你。

需要在第二行设置 android:gravity="center"

<?xml version=<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginStart="0dp"
    android:layout_marginTop="0dp"
    android:layout_weight="0"
    android:background="@color/colorPrimary">

    <TableRow
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal"></TableRow>

    <TableRow
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="horizontal">

        <ImageButton
            android:id="@+id/startButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@drawable/ic_launcher"></ImageButton>
    </TableRow>

    <TableRow
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:weightSum="3"></TableRow>
</TableLayout>