web-dev-qa-db-fra.com

Android - Centre Textview dans LinearLayout

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!

17
user222786

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.

43
invertigo

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>
2
codeMagic
<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>
0
ashvin sapariya