J'essaie de centrer un ImageView
intérieur LinearLayout
horizontalement et verticalement, mais je ne peux tout simplement pas le faire. La raison principale pour laquelle je n'utilise pas de RelativeLayout
pour cela est que j'ai besoin de layout_weight
(my se Activity
compose de quatre colonnes qui doivent être également divisées, et également sensible à différentes largeurs d'écran, chaque colonne ayant un ImageView
centré et non étiré).
Voici mon xml jusqu'à présent:
<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>
Réponses:
android:gravity
gère l'alignement de ses enfants,android:layout_gravity
gère l'alignement de lui-même.Alors utilisez-en un.
ou
la source
android:layout_gravity
est utilisé pour la mise en page elle-mêmeUtiliser
android:gravity="center"
pour les enfants de votreLinearLayout
Donc, votre code devrait être:
la source
J'ai essayé les solutions mentionnées ici mais cela ne m'a pas aidé. Je pense que la solution est
layout_width
d'utiliserwrap_content
comme valeur.la source
Voici un exemple de code. Cela a fonctionné pour moi.
Vous concevez donc la disposition linéaire pour placer tout son contenu (TextView et Button) en son centre, puis le TextView et le bouton sont placés par rapport au centre de la disposition linéaire.
la source
android:gravity
peut être utilisé sur une mise en page pour aligner ses enfants.android:layout_gravity
peut être utilisé sur n'importe quelle vue pour s'aligner sur son parent.la source