макет выравнивания: пейзаж против портрета - PullRequest
1 голос
/ 02 ноября 2011

Может кто-нибудь сказать мне, почему текст в этом макете центрируется по горизонтали в ландшафтном режиме, но выравнивается по левому краю в портретном режиме?

EDIT: Это так, потому что для ширины текста не указан предел в пикселях (то есть 500 dip). Так что, если это wrap_content, android просто пропускает текст по всему доступному пространству. Я предполагаю, что это «правильное» поведение для текстового компонента, но совершенно нежелательное.

<LinearLayout android:id="@+id/progressLayout2"
    android:layout_height="wrap_content" android:layout_width="wrap_content"
    android:layout_centerHorizontal="true" android:layout_centerVertical="true"
    android:orientation="vertical">

    <TextView android:layout_height="wrap_content"
        android:layout_width="wrap_content" android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" android:text="@string/splash_text"
        android:id="@+id/heading_splash_text" android:textSize="45dip"
        android:textColor="#A00000" android:layout_alignParentTop="true"
        android:layout_gravity="center" android:paddingBottom="70dip"
        android:paddingTop="50dip" android:typeface="normal" android:textStyle="bold"/>

</LinearLayout>

Ответы [ 2 ]

0 голосов
/ 03 ноября 2011

Я согласен с некоторыми изменениями из первого ответа, но я предполагаю, что поскольку у вас есть 'wrap_content' в линейном макете, и у вас нет пространства имен, этот макет находится внутри другого материала.

Во-первых, вам очень нужна ширина 'fill_parent', даже если вы не делаете высоту. Где гравитация должна быть указана, обычно сбивает с толку, но следующие работы. Я добавил цвет фона для текста, чтобы вы могли видеть, где это относительно всего остального.

При необходимости добавьте обратно отступы.

<LinearLayout
          android:layout_height="fill_parent"
          android:layout_width="wrap_content"
          android:orientation="vertical"
          android:layout_gravity="center"
    >

<TextView android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:text="Some text"
          android:textSize="45dip"
          android:textColor="#A00000"
          android:typeface="normal"
          android:background="#444444"
          android:textStyle="bold"/>

0 голосов
/ 02 ноября 2011

Попробуйте это:

<LinearLayout android:id="@+id/progressLayout2"  xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_width="fill_parent"
  android:orientation="vertical">

<TextView android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:text="test"
    android:id="@+id/heading_splash_text" android:textSize="45dip"
    android:textColor="#A00000" 
  android:gravity="center_vertical|center_horizontal"
    android:typeface="normal" android:textStyle="bold"/>
</LinearLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...