2010-05-06 1 views
27

Ich habe ein komplexes Layout, von dem ein Teil einen Wert über einem Label zentriert, mit + und - Tasten auf beiden Seiten des Wertes. Ich möchte, dass der Wert zwischen den Tasten zentriert wird, egal ob "1" oder "99". Es sieht gut aus, wenn es eine zweistellige Nummer wie "99" ist, aber wenn es eine einzelne Ziffer ist, ist die Nummer linksbündig. Wie zentriere ich diesen Wert?Wie Zentrieren Sie eine TextView in Layout?

Hier ist der Teil meines Layout, das dies tut:

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

Antwort

41

Es klingt wie Sie den Text innerhalb des TextView zentrieren möchten, nicht die TextView im Layout.

Sie setzen bereits explizit die minWidth der TextView, die gut ist. Haben Sie versucht, android:gravity="center_horizontal" für die TextView zu verwenden? NICHT layout_gravity Das ist die Schwere der TextView innerhalb der Eltern, in diesem Fall LinearLayout.

+0

layout_gravity funktioniert nur mit Linearlayout. – Karan

+0

Sie haben Recht, ich hatte es rückwärts. Ich werde das bisschen entfernen. –

+1

ja android: layout_gravity = "center_horizontal" funktioniert !!!! –

11

Hier ist, was für mich endlich geklappt:

 <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

Verwenden Sie einfach unten line..which funktioniert Ihr TextView in der Mitte auszurichten.

android:layout_gravity="center_horizontal"

Beispiel ..

<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

Wenn android:layout_gravity="center_horizontal" funktioniert nicht versuchen:

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