How do You Center a TextView in Layout?

Ken picture Ken · May 6, 2010 · Viewed 63.5k times · Source

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>

Answer

Brandon O&#39;Rourke picture Brandon O'Rourke · May 6, 2010

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.