在GridLayout中居中两个视图

时间:2017-11-29 19:39:54

标签: android android-layout

我正在努力制作一个简单的应用程序,并且在主页中我需要将6张cardview以两列和三行排序。 如果我在gridlayout中理解正确,则有两列占据屏幕宽度的一半,并且有三行将高度分成三个相等的部分。 我想要的是,在网格布局的每个单元格中,cardview都集中在其中; 我尝试了layout_gravity="center"这样的解决方案,但是卡片视图仍然保留在屏幕的左侧,那么我该怎么做呢?

这是我的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="match_parent"
android:layout_width="match_parent"
app:columnCount="2"
app:rowCount="3"
android:layout_gravity="center">

<android.support.v7.widget.CardView android:id="@+id/card1"
    android:layout_height="@dimen/grid_card"
    android:layout_width="@dimen/grid_card"
    app:layout_column="0"
    app:layout_row="0" />

<android.support.v7.widget.CardView android:id="@+id/card2"
    android:layout_height="@dimen/grid_card"
    android:layout_width="@dimen/grid_card"
    app:layout_column="1"
    app:layout_row="0" />

<android.support.v7.widget.CardView android:id="@+id/card3"
    android:layout_height="@dimen/grid_card"
    android:layout_width="@dimen/grid_card"
    app:layout_column="0"
    app:layout_row="1" />

<android.support.v7.widget.CardView android:id="@+id/card4"
    android:layout_height="@dimen/grid_card"
    android:layout_width="@dimen/grid_card"
    app:layout_column="1"
    app:layout_row="1" />

<android.support.v7.widget.CardView android:id="@+id/card5"
    android:layout_height="@dimen/grid_card"
    android:layout_width="@dimen/grid_card"
    app:layout_column="0"
    app:layout_row="2" />

<android.support.v7.widget.CardView android:id="@+id/card6"
    android:layout_height="@dimen/grid_card"
    android:layout_width="@dimen/grid_card"
    app:layout_column="1"
    app:layout_row="2"/>


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

1 个答案:

答案 0 :(得分:1)

将这三个属性添加到每个<CardView>代码中:

app:layout_gravity="center"
app:layout_columnWeight="1"
app:layout_rowWeight="1"

重量吸引力将确保网格中的每个单元格占据屏幕的六分之一,重力attr将确保卡片在其单元格中居中。