【问题标题】:Android: how to center view within column of TableLayout?Android:如何在 TableLayout 的列中居中视图?
【发布时间】:2011-07-27 18:36:35
【问题描述】:

我正在尝试创建一个带有复选框网格的 TabeLayout。顶部是 2 个标题,每个附加行由一个标签和 2 个复选框组成。我希望表格填满所有可用空间,第一列向左,CheckBoxes 和它们的标题在它们的列中居中。在下面的布局中,标题正确居中显示,但复选框不是。我为其中一个 CheckBox 添加了背景颜色,这表明 CheckBox 实际上增长到填充其列(这就是为什么它不会按需要居中);尽管有“wrap_content”布局参数。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:orientation="vertical">
    <TableLayout 
        android:stretchColumns="1,2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TableRow>
            <TextView 
                android:text="" 
                android:gravity="center_horizontal"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </TextView>
            <TextView 
                android:text="First category" 
                android:gravity="center_horizontal"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </TextView>
            <TextView 
                android:text="2nd category" 
                android:gravity="center_horizontal"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </TextView>
        </TableRow>
        <TableRow>
            <TextView 
                android:text="Row 1: " 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </TextView>
            <CheckBox
                android:background="#FF001122"
                android:layout_height="50dip"
                android:layout_width="wrap_content" 
                android:gravity="center_horizontal">
            </CheckBox>
            <CheckBox
                android:layout_height="50dip"
                android:layout_width="wrap_content" 
                android:gravity="center_horizontal">
            </CheckBox>
        </TableRow>
    </TableLayout>
</LinearLayout>

【问题讨论】:

  • 你想要Category..Right的复选框中心吗?

标签: android tablelayout


【解决方案1】:

在 CheckBox 上,不是设置 android:gravity="center_horizontal",而是设置 android:layout_gravity="center_horizontal"

android:gravity 控制视图如何在其自己的容器中布置其内容,并且由于您将宽度设置为"wrap_content",因此 CheckBox 没有空白空间可以在其中居中。

android:layout_weight 告诉父视图(在本例中为 TableRow)如何定位子视图,因此它将 CheckBox 在表格单元格内居中。

【讨论】:

  • 这没有帮助。我假设是因为问题是复选框被拉伸以填充整个父级,所以当我尝试将其居中时它无处可去。
  • 对不起,我弄错了。这确实解决了它。谢谢。
  • 通过编程我们可以这样设置:TableRow.LayoutParams params = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT); params.gravity = Gravity.CENTER_HORIZONTAL;
  • @AdilMalik 我想将重力设置在中心,而不是仅在 center_horizo​​ntal,请帮助我。
【解决方案2】:

使用

android:layout_gravity="center"

无论宽度是硬编码还是"wrap_content",它都会集中复选框

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-13
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    相关资源
    最近更新 更多