Как вы создаете TextView в макете?
У меня сложный макет, часть которого имеет значение, центрированное над меткой, с кнопками + и - по обе стороны от значения. Я хочу, чтобы значение центрировалось между кнопками, будь то "1" или "99". Он выглядит отлично, когда он представляет собой 2-значное число, например "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>
Ответы
Ответ 1
Похоже, вы хотите центрировать текст внутри TextView
, а не TextView
в макете.
Вы уже явно устанавливаете minWidth
в TextView
, что хорошо. Пробовали ли вы использовать android:gravity="center_horizontal"
для TextView
? NOT layout_gravity
, который является гравитацией TextView
внутри родителя, в этом случае LinearLayout
.
Ответ 2
Вот что, наконец, помогло мне:
<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
Если android:layout_gravity="center_horizontal"
не работает, попробуйте:
android:layout_gravity="center_horizontal"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
Ответ 4
Просто используйте нижнюю строку, которая отлично работает, чтобы выровнять текст в центре.
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"
/" >