如何使我的GridLayout位于屏幕中央

时间:2018-10-03 14:15:30

标签: android android-layout

这是我的Android布局。我希望显示一个3列3列的表格。每个单元格都是一个方形(偶数)按钮。如何使中心红色正方形/按钮位于Android设备的中心?我必须在屏幕中央而不是顶部具有此网格。

方形按钮代码:

  public class SquareButton extends Button {
    public SquareButton(Context context) {
        super(context);
    }

    public SquareButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SquareButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public SquareButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }
    @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = MeasureSpec.getSize(heightMeasureSpec);
        int size = width > height ? height : width;
        setMeasuredDimension(size, size);
    }
}

我的布局:

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center">


   <GridLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:rowCount="3"
       android:columnCount="3"
       android:orientation="vertical"
       android:foregroundGravity="center">

       <LinearLayout>

           <com.example.talangel.stacktests.SquareButton
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="#FF0000"
               android:layout_weight="1"/>
           <com.example.talangel.stacktests.SquareButton
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="#00FF00"
               android:layout_weight="1"/>
           <com.example.talangel.stacktests.SquareButton
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="#0000FF"
               android:layout_weight="1"/>
       </LinearLayout>

       <LinearLayout>

           <com.example.talangel.stacktests.SquareButton
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="#0000FF"
               android:layout_weight="1"/>
           <com.example.talangel.stacktests.SquareButton
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="#FF0000"
               android:layout_weight="1"/>
           <com.example.talangel.stacktests.SquareButton
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="#00FF00"
               android:layout_weight="1"/>
       </LinearLayout>

       <LinearLayout>

           <com.example.talangel.stacktests.SquareButton
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="#00FF00"
               android:layout_weight="1"/>
           <com.example.talangel.stacktests.SquareButton
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="#0000FF"
               android:layout_weight="1"/>
           <com.example.talangel.stacktests.SquareButton
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="#FF0000"
               android:layout_weight="1"/>
       </LinearLayout>

   </GridLayout>


</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

您需要将代码更改为。

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">