#android #android-layout
#Android #android-layout
Вопрос:
Может кто-нибудь сказать мне, почему текст в этом макете центрируется по горизонтали в альбомном режиме, но выравнивается по левому краю в портретном режиме?
РЕДАКТИРОВАТЬ: это так, потому что для ширины текста не указано ограничение в пикселях (т.Е. 500dip). Так что, если это 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>
Ответ №1:
Я согласен с некоторыми изменениями из первого ответа, но я предполагаю, что, поскольку у вас есть ‘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"/>
Ответ №2:
Попробуйте это:
<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>
Комментарии:
1. Я думаю, что причина, по которой ваш код выровнен по левому краю в портретном режиме, заключается в том, что linearlayout — это wrap_content, я думаю, что его родительский элемент управления помещает его на левую сторону в портретном режиме.