J'ai examiné diverses solutions, y compris la gravité, mais je n'ai pas trouvé la réponse au problème que j'ai, c'est-à-dire les boutons d'image à l'intérieur de la grille la disposition ne couvre pas la largeur de l'écran - ressemblant à cette image ci-dessous. Ils sont plus groupés vers la gauche. Je voudrais que l'espacement soit uniforme à travers l'écran. Merci pour l'aide.Comment centrer les boutons d'image à l'intérieur d'une disposition de grille - Android Studio
Voici le fichier 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>
Merci, cela fonctionne. Juste une chose - la hauteur de la disposition de la grille était tout l'écran, mais je veux qu'il soit plus petit comme le montre l'image ci-dessus. J'ai réglé manuellement le paramètre layout: height pour la disposition de la grille à 300 dp. Y a-t-il une meilleure manière de faire cela? – kmindspark
Si vous voulez utiliser 'height' ou' width', vous pouvez le faire. Mais cela peut affecter la disposition sur différentes tailles d'écran. Il est bon d'utiliser des «poids» si vous pouvez le faire efficacement. Si vous voulez définir 'height' de' GridLayout' sur la moitié de la taille de l'écran, vous pouvez mettre 'layout: height = 0dp' et' layout: weight = 1'. Et pour cela, le parent devrait être «LinearLayout» avec «orientation verticale» –