Как вы центрируете TextView в макете? - PullRequest
28 голосов
/ 06 мая 2010

У меня сложный макет, часть которого имеет значение, центрированное по метке, с кнопками + и - по обе стороны от значения. Я хочу, чтобы значение располагалось по центру между кнопками, будь то «1» или «99». Выглядит хорошо, когда это двузначное число, такое как «99», но когда это однозначное число, оно выравнивается по левому краю. Как правильно отцентрировать это значение?

Вот часть моего макета, которая делает это:

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

Ответы [ 4 ]

41 голосов
/ 07 мая 2010

Звучит так, будто вы хотите центрировать текст внутри TextView, а не TextView в макете.

Вы уже явно устанавливаете minWidth TextView, чтоэто хорошо.Вы пытались использовать android:gravity="center_horizontal" для TextView?НЕ layout_gravity, который является гравитацией TextView внутри родителя, в данном случае LinearLayout.

11 голосов
/ 13 мая 2010

Вот что наконец-то сработало для меня:

        <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>
2 голосов
/ 18 мая 2016

Если android:layout_gravity="center_horizontal" не работает, попробуйте:

        android:layout_gravity="center_horizontal"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
1 голос
/ 24 августа 2015

Просто используйте строку ниже ... которая отлично работает, чтобы выровнять 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"/>
...