2010-05-06 67 views
27

我有一個複雜的佈局,其中的一部分特徵是一個以標籤爲中心的值,在值的兩邊都有+和 - 按鈕。我希望值位於按鈕之間,無論是「1」還是「99」。它看起來很好,當它是一個2位數字如「99」時,但是當它是一個數字時,該數字是左對齊的。我如何正確地集中這個價值?如何在佈局中居中TextView?

下面是做到這一點我佈局的一部分:

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

回答

41

這聽起來像你想居中TextView內的文本,而不是TextView在佈局。

您已經明確設置了TextViewminWidth,這很好。您是否嘗試過使用android:gravity="center_horizontal"作爲TextView? NOT layout_gravity這是TextView在父級內的重力,在這種情況下是LinearLayout

+0

layout_gravity只適用於LinearLayout中。 – Karan 2010-05-07 04:31:01

+0

你說得對,我倒退了。我會刪除那一點。 – 2010-05-07 14:36:47

+1

yes android:layout_gravity =「center_horizo​​ntal」works !!!! – 2013-02-15 05:17:42

11

這裏是終於爲我工作:

 <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

只需要用下面line..which工作正常,結合你的TextView的中心。

android:layout_gravity="center_horizontal"

例..

<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

如果android:layout_gravity="center_horizontal"不工作的嘗試:

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