J'essaie de créer un GridLayout avec 2 colonnes qui seront centrées.
Ma conception actuelle est:
<GridLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:custom="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
custom:rowCount="4"
custom:columnCount="2"
Android:orientation="horizontal">
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:layout_height="75dp"
Android:gravity="top|left"
Android:background="#00FF00"
custom:color="green"
custom:layout_row="0"
custom:layout_column="0" />
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:gravity="top|left"
Android:layout_height="75dp"
Android:background="#00FF00"
custom:color="blue"
custom:layout_row="0"
custom:layout_column="1" />
</GridLayout>
Et ça ressemble à:
Et j'aimerais avoir ces boutons au centre et parfaitement avec un espacement entre eux.
C'est possible?
--ÉDITER:
J'ai également essayé de le mettre dans LinearLayout, sans résultats:
<?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:orientation="vertical">
<GridLayout xmlns:custom="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
custom:rowCount="4"
custom:columnCount="2"
Android:orientation="horizontal"
Android:gravity="center"
Android:layout_gravity="center">
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:layout_height="75dp"
Android:background="#00FF00"
custom:color="green"
custom:layout_row="0"
custom:layout_column="0" />
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:layout_height="75dp"
Android:background="#00FF00"
custom:color="blue"
custom:layout_row="0"
custom:layout_column="1" />
</GridLayout>
</LinearLayout>
Faites en sorte que la grille enveloppe son contenu horizontalement avec layout_width="wrap_content"
et définissez c'est layout_gravity
à center
:
<GridLayout
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="center"
// ......
>
La distribution de l'espace excédentaire par GridLayout est basée sur la priorité plutôt que sur le poids.
(...)
Pour étirer une colonne, assurez-vous que tous les composants qu'elle contient définissent une gravité.
Donc, apparemment, vous devez définir le layout_gravity
à Android:layout_gravity="top|center"
(Je n'ai pas testé cela, mais d'après la documentation, cela devrait être dans ce sens.)
Tu y es presque. Je pense que cela fera l'affaire:
<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:custom="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<GridLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
custom:rowCount="4"
custom:columnCount="2"
Android:layout_gravity="center_horizontal"
Android:orientation="horizontal">
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:layout_height="75dp"
Android:background="#00FF00"
custom:color="green"
custom:layout_row="0"
custom:layout_column="0" />
<TimeTableKeeper.Tile
Android:layout_width="75dp"
Android:layout_height="75dp"
Android:background="#00FF00"
custom:color="blue"
custom:layout_row="0"
custom:layout_column="1" />
</GridLayout>
</FrameLayout>