Comment centrer un TextView dans Layout?

j'ai un plan complexe, qui dispose d'une valeur centrée sur l'étiquette, avec les touches + et - de chaque côté de la valeur. Je veux que la valeur soit centrée entre les boutons, que ce soit "1" ou "99". Il semble bien, quand il est à 2 chiffres comme "99", mais quand c'est un seul chiffre le nombre est justifié à gauche. Comment puis-je centrer correctement cette valeur?

Voici la partie de ma mise en page qui fait ceci:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@id/runway_label"
    android:layout_centerHorizontal="true"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/dec_runway_button"
        android:src="@drawable/minus_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"/>

    <TextView
        android:id="@+id/runway_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FFFFFF"
        android:textStyle="bold"
        android:textSize="40.0sp"
        android:minWidth="50sp"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:shadowColor="#333333"
        android:shadowDx="2.0"
        android:shadowDy="2.0"
        android:shadowRadius="3.0" />

    <ImageView
        android:id="@+id/inc_runway_button"
        android:src="@drawable/plus_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"/>

</LinearLayout>
27
demandé sur fawaad 2010-05-06 23:53:40

4 réponses

On dirait que vous voulez centrer le texte dans le TextView, pas TextView dans la disposition.

vous définissez déjà explicitement le minWidthTextView, ce qui est bon. Avez-vous essayé d'utiliser android:gravity="center_horizontal" pour les TextView? PAS layout_gravity qui est la gravité de la TextView au sein du parent, dans ce cas LinearLayout.

41
répondu Brandon O'Rourke 2010-09-03 19:38:14

Voici ce qui a fonctionné pour moi:

        <RelativeLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true">
        <TextView android:id="@+id/runway_label"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true" android:gravity="center_horizontal"
            android:minWidth="110sp" android:textColor="#66CCFF"
            android:textStyle="bold" android:textSize="15sp" android:text="@string/runway_label" />
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@id/runway_label"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal">
            <ImageView android:id="@+id/dec_runway_button" android:src="@drawable/minus_button"
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"/>
            <TextView android:id="@+id/runway_value"
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:textColor="#FFFFFF"
                android:textStyle="bold" android:textSize="40.0sp"
                android:minWidth="50sp"
                android:layout_centerInParent="true"
                android:layout_gravity="center"
                android:shadowColor="#333333" android:shadowDx="2.0"
                android:shadowDy="2.0" android:shadowRadius="3.0" />
            <ImageView android:id="@+id/inc_runway_button" android:src="@drawable/plus_button"
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"/>
        </LinearLayout>
    </RelativeLayout>
11
répondu Ken 2010-05-13 18:43:29

Si android:layout_gravity="center_horizontal" ne fonctionne pas, essayez:

        android:layout_gravity="center_horizontal"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
2
répondu Oli 2016-05-17 21:24:21

utilisez juste en dessous de la ligne..qui fonctionne très bien pour aligner votre TextView dans le centre.

android:layout_gravity="center_horizontal"

Exemple..

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="My Text View"
    android:layout_gravity="center_horizontal"
    android:textSize="28sp"/>
1
répondu urnish 2018-01-23 05:21:53