【问题标题】:Can't get rows in TableLayout to center horizontally无法使 TableLayout 中的行水平居中
【发布时间】:2015-01-28 23:12:30
【问题描述】:

我无法让我的 TableLayout 中的行在屏幕上居中。我正在尝试创建一个 4x4 的可点击图像表,并希望它们在屏幕上居中。画完它们左对齐,我希望它们在两边都有空间居中。这是我的代码:

<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="wrap_content"
        android:paddingTop="20dp">

        <TableRow android:layout_gravity="center_horizontal">

            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp"
                android:layout_gravity="center" />
            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp" 
                android:layout_gravity="center" />
            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp" 
                android:layout_gravity="center" />
            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp" 
                android:layout_gravity="center" />

        </TableRow>

        <TableRow android:layout_gravity="center_horizontal">

            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp" />
            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp" />
            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp" />
            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp" />

        </TableRow>

        <TableRow android:layout_gravity="center_horizontal">

            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp" />
            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp" />
            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp" />
            <ImageView android:src="@drawable/rocket"
                android:layout_width="60dp"
                android:layout_height="60dp" 
                android:padding="3dp" />            
        </TableRow>

    </TableLayout>


</LinearLayout>

有什么建议吗?

【问题讨论】:

  • 尝试将 更改为 如果这不起作用,我会将 android:width="wrap_content" 添加到表中行,看看是否有效
  • 将 android:layout_gravity 更改为 android:gravity 成功了!我不敢相信我没有尝试过,但是谢谢!有什么区别有什么想法吗?

标签: android tablelayout android-tablelayout


【解决方案1】:

如下尝试android:layout_gravity="center_horizo​​ntal"

 <TableRow android:layout_gravity="center_horizontal" 
          android:layout_weightsum = "4">

                <ImageView android:src="@drawable/rocket"
                    android:layout_width="60dp"
                    android:layout_height="60dp" 
                    android:padding="3dp"
                    android:layout_weight = "1" />
                <ImageView android:src="@drawable/rocket"
                    android:layout_width="60dp"
                    android:layout_height="60dp" 
                    android:padding="3dp"
                    android:layout_weight = "1"  />
                <ImageView android:src="@drawable/rocket"
                    android:layout_width="60dp"
                    android:layout_height="60dp" 
                    android:padding="3dp"
                    android:layout_weight = "1"  />
                <ImageView android:src="@drawable/rocket"
                    android:layout_width="60dp"
                    android:layout_height="60dp" 
                    android:padding="3dp"
                    android:layout_weight = "1"  />            
            </TableRow>

【讨论】:

  • android:layout_weightsum - 似乎已弃用
【解决方案2】:

通常我们使用 layout_gravity 来对齐。

试试

android:gravity="center_horizontal"

在您的代码中。

android:gravity 将数据水平居中对齐。

【讨论】:

    【解决方案3】:

    对于 bieno002,请确保您的 &lt;TableLayout&gt; 已将 layout_width 设置为 "wrap_content"。这将给它两侧呼吸的空间。

    然后,只需将 android:layout_gravity="horizontal" 添加到您的 &lt;TableLayout&gt; 节点。像这样:

    <TableLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal">
        <TableRow>
            <TextView (or whatever)>
            <TextView (or whatever)>
        </TableRow>
    </TableLayout>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 2019-09-02
      • 2014-12-10
      • 2012-11-09
      • 2013-12-28
      • 2022-01-21
      相关资源
      最近更新 更多