J'essaie de centrer un ImageView
à l'intérieur d'un LinearLayout
horizontalement et verticalement, mais je ne peux simplement pas le faire. La raison principale pour laquelle je n'utilise pas de variable RelativeLayout
est que j'ai besoin du layout_weight
(mon Activity
est constitué de quatre colonnes qui doivent être divisées de manière égale et qui répondent également à des écrans différents. largeurs, chaque colonne ayant un ImageView
centré et non étiré).
Voici mon xml à ce jour:
<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:background="#000"
Android:baselineAligned="false"
Android:gravity="center"
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=".Main" >
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_speak"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_speak" />
</LinearLayout>
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_readtext"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_readtext" />
</LinearLayout>
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_edit"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_edit" />
</LinearLayout>
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_config"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_config" />
</LinearLayout>
</LinearLayout>
Android:gravity
gère l'alignement de ses enfants,
Android:layout_gravity
gère son propre alignement.
Alors utilisez-en un.
<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:background="#000"
Android:baselineAligned="false"
Android:gravity="center"
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=".Main" >
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:gravity="center" >
<ImageView
Android:id="@+id/imageButton_speak"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_speak" />
</LinearLayout>
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:gravity="center" >
<ImageView
Android:id="@+id/imageButton_readtext"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_readtext" />
</LinearLayout>
...
</LinearLayout>
ou
<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:background="#000"
Android:baselineAligned="false"
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=".Main" >
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_speak"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_speak" />
</LinearLayout>
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_readtext"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_readtext" />
</LinearLayout>
...
</LinearLayout>
Android:layout_gravity
est utilisé pour la mise en page elle-même
Utilisez Android:gravity="center"
pour les enfants de votre LinearLayout
Donc, votre code devrait être:
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:layout_weight="1" >
J’ai essayé les solutions ici mais j’ai un problème et j’ai essayé quelques modifications qui me dérangent dans layout_width
n’aurais besoin d’être wrap_content
comme ceci
<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:layout_weight="1" >
Voici un exemple de code. Cela a fonctionné pour moi.
<LinearLayout
Android:gravity="center"
>
<TextView
Android:layout_gravity="center"
/>
<Button
Android:layout_gravity="center"
/>
</LinearLayout>
Vous concevez donc la disposition linéaire pour placer tout son contenu (TextView et Button) en son centre, puis la vue TextView et le bouton sont placés par rapport au centre de la disposition linéaire.