Android:TableLayout。对齐中间的行

时间:2017-08-26 11:10:53

标签: android android-tablelayout

请参阅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>

enter image description here

错过了哪些属性或错误设置为在第二行中间设置ImageButton? (纵向和横向)

如何制作相等的行高和宽度?

我在问题/答案基础中搜索没有成功..

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

更新:

要将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>

请看看发生了什么,当然不正确: enter image description here

但如何使行高相等仍然不明白。

第二行现在格式如下,但在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>

2 个答案:

答案 0 :(得分:1)

如果我没弄错,第二行需要{{1}}

答案 1 :(得分:0)

<强>更新

我认为TableRow可以在整个屏幕中修复垂直,每行的高度相同,直到你使所有TableRow都相同。这就是TableLayout和TableRow的行为。参见:

<?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>

它会给第二排带来更多的重量。

<强> OLD

你走了。

需要在第二行设置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>