J'essaie de centrer un TextView
dans un LinearLayout
et il se centre horizontalement mais pas verticalement.
ci-dessous est mon code
<LinearLayout
Android:orientation="vertical"
Android:layout_width="320dp"
Android:layout_height="50dp"
Android:background="@drawable/rectblack"
Android:layout_marginTop="10dp"
Android:layout_gravity="center"
Android:minWidth="25px"
Android:minHeight="25px">
<TextView
Android:text="Explode a Vin"
Android:gravity="center"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:id="@+id/tvExVin" />
</LinearLayout>
En fin de compte, je voudrais qu'il soit centré verticalement à gauche du Linearlayout
, si quelqu'un pouvait comprendre comment le faire, ce serait bien.
Merci!
Vous avez inversé la gravité et la disposition_gravité. Vous pouvez avoir plusieurs valeurs sur l'attribut gravity séparées par "|". Essaye ça:
<LinearLayout
Android:orientation="vertical"
Android:layout_width="320dp"
Android:layout_height="50dp"
Android:background="@drawable/rectblack"
Android:layout_marginTop="10dp"
Android:layout_gravity="center_horizontal"
Android:gravity="center_vertical|left"
Android:minWidth="25px"
Android:minHeight="25px">
<TextView
Android:text="Explode a Vin"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/tvExVin" />
</LinearLayout>
Pour clarification:
Android:layout_gravity="center_horizontal"
centrera le LinearLayout horizontalement dans son parent.
Android:gravity="center_vertical|left"
centrera le TextView (et tous les autres enfants) verticalement à l'intérieur du LinearLayout et l'alignera vers la gauche.
Essayez de changer votre gravity
en
Android:layout_gravity="center_vertical"
gravity
est utilisé pour positionner le contenu à l'intérieur de vos View
et layout_gravity
est utilisé pour positionner le View
dans son parent.
Mais je suis confus par "Au final, je voudrais qu'il soit centré verticalement à gauche du Linearlayout". Mais à première vue, ma réponse devrait vous donner ce que vous voulez.
De plus, à moins qu'il n'y ait une très bonne raison, vous ne devriez pas avoir besoin d'utiliser un LinearLayout
, ou n'importe quel parent, pour un seul enfant. Si vous pouvez donner une meilleure explication de ce que vous voulez ou même une capture d'écran, nous pourrons peut-être vous aider avec une meilleure solution.
Cela vous donnera l'effet souhaité
<LinearLayout
Android:layout_width="320dp" <!-- removed orientation (horizontal by default) -->
Android:layout_height="50dp"
Android:background="@drawable/rectblack"
Android:layout_marginTop="10dp"
Android:layout_gravity="center"
Android:minWidth="25px"
Android:minHeight="25px">
<TextView
Android:text="Explode a Vin"
Android:layout_gravity="center_vertical" <!-- changed gravity here -->
Android:layout_width="fill_parent"
Android:layout_height="wrap_content" <!-- change to wrap_content -->
Android:id="@+id/tvExVin" />
</LinearLayout>
<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:layout_gravity="center_horizontal|center_vertical"
Android:gravity="center_vertical|center_horizontal"
Android:orientation="vertical" >
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="AppLock Demo"
Android:textSize="30dp" />
</LinearLayout>