在 GridLayout 中水平居中项目

Center items horizontally in a GridLayout

我尝试将我的所有项目置于我的 GridLayout 中心,我尝试了很多东西(使用 RelativeLayout 作为父级,然后使用 layout_centerInParent,使用基本的 android:layout_gravity="center" ,尝试添加一些 space 元素...)但我没有成功地将我的项目居中。作为一个形象,他比文字更好,这是我所拥有的:

这是我想要的:

我当前的代码是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mainContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="MainActivity">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#66000000">

        <TextView
            android:id="@+id/textView4"
            android:layout_width="match_parent"
            android:layout_height="0dp" ... />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.50">

        <android.support.v7.widget.GridLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:grid="http://schemas.android.com/apk/res-auto"
            android:id="@+id/droparea"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.50"
            grid:columnCount="3"
            grid:orientation="horizontal">

            <SquareRelativeLayout
                android:id="@+id/relativelayout"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                grid:layout_columnWeight="1"
                grid:layout_gravity="fill"
                android:background="@drawable/round_layout"
                android:gravity="center_vertical|center_horizontal">
                ...
            </SquareRelativeLayout>

            <SquareRelativeLayout
                android:id="@+id/relativelayout2"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                grid:layout_columnWeight="1"
                grid:layout_gravity="fill"
                android:background="@drawable/round_layout"
                android:gravity="center_vertical|center_horizontal">
                ...
            </SquareRelativeLayout>

            <SquareRelativeLayout
                android:id="@+id/relativelayout3"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                grid:layout_columnWeight="1"
                grid:layout_gravity="fill"
                android:background="@drawable/round_layout"
                android:gravity="center_vertical|center_horizontal"> 
                ...
            </SquareRelativeLayout>

            <SquareRelativeLayout
                android:id="@+id/relativelayout4"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                grid:layout_columnWeight="1"
                grid:layout_gravity="fill"
                android:background="@drawable/round_layout"
                android:gravity="center_vertical|center_horizontal">
                ....
            </SquareRelativeLayout>

            <SquareRelativeLayout
                android:id="@+id/relativelayout5"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                grid:layout_columnWeight="1"
                grid:layout_gravity="fill"
                android:background="@drawable/round_layout"
                android:gravity="center_vertical|center_horizontal">
                ...
            </SquareRelativeLayout>

            </android.support.v7.widget.GridLayout>
        </RelativeLayout>

        <include layout="@layout/draggable_linearlayout"/>

    </LinearLayout>

</RelativeLayout>

你知道我如何用 GridLayout 或类似的东西得到这样的结果吗?

Ps:SquareRelativeLayout 只是一个简单的 CustomLayout,它强制我的 RelativeLayout 为正方形(宽度 = 高度)。

您需要 GridLayout 吗? 如果没有,您可以尝试这样的操作:

    <LinearLayout
        android:id="@+id/firstRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:weightSum="3">

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:background="@color/white"/>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:background="@color/white"/>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:background="@color/white"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/SecondRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:weightSum="3">

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:background="@color/white"/>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:background="@color/white"/>
    </LinearLayout>