在LinearLayout中垂直居中GridView

时间:2018-04-19 05:23:03

标签: android

这是一个很受欢迎的问题,但在我对Stack Overflow进行广泛搜索的过程中,我似乎找不到能够实现我想做的事情的解决方案。这是我的活动文件:

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

    <GridView
      android:id="@+id/menu_options"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:numColumns="2"/>
</LinearLayout>

这是我个人的网格项布局文件(我通过适配器动态生成项目):

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

    <Button
      android:id="@+id/menu_button"
      android:layout_width="match_parent"
      android:layout_height="200dp"
      android:textSize="25sp"/>
</LinearLayout>

我的结果是:See image. enter image description here

我希望这些按钮在我的视图中间轻拍,我可以通过XML执行此操作,还是我必须自己手动计算尺寸并添加填充(等)?提前谢谢。

2 个答案:

答案 0 :(得分:0)

试试这个

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    tools:context=".MainActivity">

    <GridView
        android:id="@+id/menu_options"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numColumns="2" />

</LinearLayout>

网格项目布局

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

    <Button
        android:id="@+id/menu_button"
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:textSize="25sp" />

</LinearLayout>

答案 1 :(得分:0)

在Grid父容器上使用重心,然后在GridView中使用wrap_content

<?xml version="1.0" encoding="utf-8"?>
        <LinearLayout
          xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:gravity="center"
          tools:context=".MainActivity">

          <GridView
            android:layout_gravity="center"
            android:id="@+id/menu_options"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:numColumns="2"/>
    </LinearLayout>