2010-05-06 8 views
27

Tôi có bố cục phức tạp, một phần trong đó có một giá trị được căn giữa trên nhãn, với các nút + và - ở hai bên của giá trị. Tôi muốn giá trị nằm giữa các nút, cho dù đó là "1" hoặc "99". Có vẻ ổn khi đó là số có 2 chữ số như "99", nhưng khi đó là một chữ số thì số đó được căn trái. Làm thế nào để tôi tập trung đúng giá trị đó?Làm cách nào để Trung tâm TextView trong Bố cục?

Dưới đây là một phần của cách bố trí của tôi mà thực hiện điều này:

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

Trả lời

41

Có vẻ như bạn muốn tập trung dòng chữ trong TextView, không phải là TextView trong Layout.

Bạn đã đặt rõ ràng minWidth trong số TextView, điều này rất tốt. Bạn đã thử sử dụng android:gravity="center_horizontal" cho số TextView chưa? KHÔNG layout_gravity là trọng lực của TextView trong bố mẹ, trong trường hợp này là LinearLayout.

+0

layout_gravity chỉ làm việc với LinearLayout. – Karan

+0

Bạn nói đúng, tôi đã quay lại. Tôi sẽ loại bỏ bit đó. –

+1

yes android: layout_gravity = "center_horizontal" hoạt động !!!! –

11

Đây là những gì cuối cùng làm việc cho tôi:

 <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

Chỉ cần sử dụng dưới đây line..which hoạt động tốt để gắn kết TextView của bạn ở trung tâm.

android:layout_gravity="center_horizontal"

Ví dụ ..

<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

Nếu android:layout_gravity="center_horizontal" không hoạt động thử:

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