2010-05-06 7 views
27

Ho un layout complesso, in parte con un valore centrato su un'etichetta, con pulsanti + e - su entrambi i lati del valore. Voglio che il valore si centra tra i pulsanti, che sia "1" o "99". Sembra buono quando si tratta di un numero di 2 cifre come "99", ma quando è una singola cifra il numero è giustificato a sinistra. Come faccio a centrare correttamente quel valore?Come si centra un TextView nel layout?

Ecco la parte del mio layout che fa questo:

<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> 

risposta

41

Sembra che si desidera centrare il testo all'interno del TextView, non il TextView nel Layout.

Stai già impostando lo minWidth dello TextView, che è buono. Hai provato a utilizzare android:gravity="center_horizontal" per il TextView? NON layout_gravity che è la gravità dello TextView all'interno del genitore, in questo caso LinearLayout.

+0

layout_gravity funziona solo con LinearLayout. – Karan

+0

Hai ragione, l'ho fatto all'indietro. Toglierò quel pezzetto. –

+1

sì android: layout_gravity = "center_horizontal" funziona !!!! –

11

Ecco quello che finalmente ha funzionato per me:

 <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> 
1

Basta usare sotto line..which funziona bene per allineare il tuo TextView nel centro.

android:layout_gravity="center_horizontal"

Esempio ..

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="My Text View" 
    android:layout_gravity="center_horizontal" 
    android:textSize="28sp"/> 
2

Se android:layout_gravity="center_horizontal" non funziona prova:

 android:layout_gravity="center_horizontal" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true"