我已经看过包括重力在内的各种解决方案,但还没有找到我遇到的问题的答案,那就是网格内部的图像按钮布局没有跨越屏幕的宽度 - 看起来像下面这张图片。他们更加聚集在左边。我希望间距甚至可以跨越屏幕。谢谢您的帮助。如何将网格布局中的图像按钮居中 - Android Studio
下面是XML文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_admin_control"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.myname.myproject.AdminControl">
<Button
android:text="Switch to User"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:id="@+id/userSwitch" />
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/userSwitch"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:rowCount="2"
android:columnCount="3"
android:alignmentMode="alignMargins">
<ImageButton
app:srcCompat="@drawable/common_google_signin_btn_icon_dark"
android:layout_row="0"
android:layout_column="0"
android:layout_width="118dp"
android:layout_height="118dp"
android:scaleType="fitCenter"/>
<ImageButton
app:srcCompat="@drawable/common_google_signin_btn_icon_dark"
android:id="@+id/imageButton5"
android:layout_row="0"
android:layout_column="1"
android:layout_width="118dp"
android:layout_height="118dp"
android:scaleType="fitCenter"/>
<ImageButton
app:srcCompat="@drawable/common_google_signin_btn_icon_dark"
android:id="@+id/imageButton6"
android:layout_row="0"
android:layout_column="2"
android:layout_width="118dp"
android:layout_height="118dp"
android:scaleType="fitCenter"/>
<ImageButton
app:srcCompat="@drawable/common_google_signin_btn_icon_dark"
android:id="@+id/imageButton7"
android:layout_row="1"
android:layout_column="0"
android:layout_width="118dp"
android:layout_height="118dp"
android:scaleType="fitCenter"/>
<ImageButton
app:srcCompat="@drawable/common_google_signin_btn_icon_dark"
android:id="@+id/imageButton8"
android:layout_row="1"
android:layout_column="1"
android:layout_width="118dp"
android:layout_height="118dp"
android:scaleType="fitCenter"/>
<ImageButton
app:srcCompat="@drawable/common_google_signin_btn_icon_dark"
android:id="@+id/imageButton9"
android:layout_row="1"
android:layout_column="2"
android:layout_width="118dp"
android:layout_height="118dp"
android:scaleType="fitCenter"/>
</GridLayout>
</RelativeLayout>
谢谢,它的工作原理。只有一件事 - 网格布局的高度是整个屏幕,但我希望它如上图所示更小。我手动将布局:网格布局的高度参数设置为300 dp。有一个更好的方法吗? – kmindspark
如果你想使用定义的“高度”或“宽度”,你可以这样做。但它可能会影响不同屏幕尺寸的布局。如果你可以有效地使用“权重”,这是很好的。如果你想将'GridLayout'的'height'设置为屏幕大小的一半,你可以使用'layout:height = 0dp'和'layout:weight = 1'。对此,父级应该是'LinearLayout'和'vertical orientation' –