J'ai une mise en page complexe, dont une partie comporte une valeur centrée sur une étiquette, avec des boutons + 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 c'est un nombre à 2 chiffres comme "99", mais quand c'est un seul chiffre, le nombre est justifié à gauche. Comment 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>
Il semble que vous souhaitiez centrer le texte dans le TextView
, pas le TextView
dans la mise en page.
Vous définissez déjà explicitement le minWidth
du TextView
, ce qui est bien. Avez-vous essayé d'utiliser Android:gravity="center_horizontal"
pour le TextView
? NE PAS layout_gravity
qui est la gravité du TextView
au sein du parent, dans ce cas LinearLayout
.
Voici ce qui a finalement 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>
Si Android:layout_gravity="center_horizontal"
ne fonctionne pas, essayez:
Android:layout_gravity="center_horizontal"
Android:layout_alignParentTop="true"
Android:layout_centerHorizontal="true"
Utilisez simplement la ligne ci-dessous ... qui fonctionne bien pour aligner votre TextView
au 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"/>