2017-02-17 2 views
0

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

there is extra spacing on the right hand side

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> 

Répondre

2

Ne pas définir vous width. Laissez GridLayout effectuer cette tâche. Définir tous width et height à 0dp et tous les weights à 1.

Cela pourrait fonctionner pour vous. Je n'ai pas vérifié, mais ça devrait marcher.

<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="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     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="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     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="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     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="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     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="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     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="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:scaleType="fitCenter"/> 

</GridLayout> 
+0

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

+0

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» –

0

Essayez ce,

 <?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" 
     android:id="@+id/activity_admin_control" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <Button 
      android:id="@+id/userSwitch" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_gravity="center" 
      android:text="Switch to User" /> 

     <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_above="@+id/userSwitch" 
      android:layout_centerHorizontal="true"> 

      <GridLayout 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 

       android:layout_centerHorizontal="true" 
       android:alignmentMode="alignMargins" 
       android:columnCount="3" 
       android:rowCount="2"> 

       <ImageButton 

        android:layout_width="118dp" 
        android:layout_height="118dp" 
        android:layout_column="0" 
        android:layout_row="0" 
        android:scaleType="fitCenter" 
        app:srcCompat="@drawable/common_google_signin_btn_icon_dark" /> 

       <ImageButton 

        android:id="@+id/imageButton5" 
        android:layout_width="118dp" 
        android:layout_height="118dp" 
        android:layout_column="1" 
        android:layout_row="0" 
        android:scaleType="fitCenter" 
        app:srcCompat="@drawable/common_google_signin_btn_icon_dark" /> 

       <ImageButton 

        android:id="@+id/imageButton6" 
        android:layout_width="118dp" 
        android:layout_height="118dp" 
        android:layout_column="2" 
        android:layout_row="0" 
        android:scaleType="fitCenter" 
        app:srcCompat="@drawable/common_google_signin_btn_icon_dark" /> 

       <ImageButton 

        android:id="@+id/imageButton7" 
        android:layout_width="118dp" 
        android:layout_height="118dp" 
        android:layout_column="0" 
        android:layout_row="1" 
        android:scaleType="fitCenter" 
        app:srcCompat="@drawable/common_google_signin_btn_icon_dark" /> 

       <ImageButton 

        android:id="@+id/imageButton8" 
        android:layout_width="118dp" 
        android:layout_height="118dp" 
        android:layout_column="1" 
        android:layout_row="1" 
        android:scaleType="fitCenter" 
        app:srcCompat="@drawable/common_google_signin_btn_icon_dark" /> 

       <ImageButton 

        android:id="@+id/imageButton9" 
        android:layout_width="118dp" 
        android:layout_height="118dp" 
        android:layout_column="2" 
        android:layout_row="1" 
        android:scaleType="fitCenter" 
        app:srcCompat="@drawable/common_google_signin_btn_icon_dark" /> 

      </GridLayout> 
     </RelativeLayout> 

     </RelativeLayout> 
0

-je savoir qu'il est impossible de centrer GridView horizontalement avec .xml donc je devais le faire ... programme Cette réponse m'a beaucoup aidé: link

0

vous pouvez essayer cette largeur et la hauteur est codée, vous devez fixer une ligne ou une colonne ou vous pouvez utiliser la marge.

<?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" 
    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:layout_marginLeft="@dimen/activity_vertical_margin" 
     android:layout_marginRight="@dimen/activity_vertical_margin" 
     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>