问题
I have a complex layout, part of which features a value centered over a label, with + and - buttons on either side of the value. I want the value to center between the buttons, whether it is "1" or "99". It looks fine when it's a 2-digit number like "99", but when it's a single digit the number is left-justified. How do I properly center that value?
Here's the portion of my layout that does this:
<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>
回答1:
It sounds like you want to center the text within the TextView, not the TextView in the Layout.
You're already explicitly setting the minWidth of the TextView, which is good. Have you tried using android:gravity="center_horizontal" for the TextView? NOT layout_gravity which is the gravity of the TextView within the parent, in this case LinearLayout.
回答2:
Here is what finally worked for 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>
回答3:
If android:layout_gravity="center_horizontal" is not working try:
android:layout_gravity="center_horizontal"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
回答4:
Just use below line..which works fine to align your TextView in center.
android:layout_gravity="center_horizontal"
Example..
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My Text View"
android:layout_gravity="center_horizontal"
android:textSize="28sp"/>
来源:https://stackoverflow.com/questions/2784003/how-do-you-center-a-textview-in-layout