2016-03-10 123 views
2

我尝试将我的所有项目居中放在GridLayout中,我尝试了很多事情(使用RelativeLayout作为父项,然后使用layout_centerInParent,使用基本的android:layout_gravity =“center”,尝试添加一些空间元素......),但是我没有成功将我的物品居中。作为图像他胜于言,这里是我有:在GridLayout中水平居中项目

enter image description here

在这里,我想:

enter image description here

而且我当前的代码是:

<?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是一个正方形(width = height)。

回答

0

你需要一个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> 
+0

我的项目可以是可变的,我觉得它更好地使用该布局的设计,我也许可以使用此解决方案,但我需要做一些编程技巧就能够拥有好数量的LinearLayout。 – zed13

+0

最后,我用你的提示来构建我自己的布局,谢谢。 – zed13