Вот пара кратких рекомендаций:
- Макеты Android, как правило, гораздо более глубоко вложены, чем вы обычно ожидаете. Вы часто получаете «пустые» макеты, которые просто занимают место, так что другие элементы располагаются правильно.
- RelativeLayout - ваш друг, когда вы выравниваете текст по определенному краю.
- Используйте настройки отступов, чтобы поместить текст "немного дальше" от края.
- Гравитация выравнивает текст внутри этого TextView или кнопки.
Еще раз посмотрев на вашу диаграмму, я воспроизвел ее следующим образом:
- Начните с относительного макета ('fill_content'), который занимает весь экран.
- Вставьте «короткий текст» и «еще немного текста», привязав верх и низ.
- Поместите элемент нулевой ширины со свойством centerInParent для точки посередине.
экрана.
- Поместите оставшиеся элементы выше и выровняйте по этой центральной точке.
К сожалению, на шаге 4 ничего не работало правильно. Ничего подобного «layout_below» не работало, когда указанный элемент был элементом centerInParent. с относительными раскладками к шагу 3. Оказывается, это связано с невозможностью заполнения fill_content на верхнем уровне. Да, макеты хитрые, и я бы хотел, чтобы для них был отладчик.
Вот правильная версия:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/r1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/short_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Short Text"
android:gravity="right"
android:layout_marginTop="30dip"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/more_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Some More Text"
android:gravity="center"
android:layout_alignParentBottom="true" />
<TextView android:id="@+id/centerpoint"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="0dip"
android:height="0dip"
/>
<TextView android:id="@+id/run_fox"
android:text="Run, fox, run!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/centerpoint"
android:layout_toLeftOf="@id/centerpoint"
/>
<TextView
android:layout_below="@id/centerpoint"
android:text="The quick brown fox jumped over the lazy dog, who had been a frog, and then got features and ran slowly."
android:layout_alignRight="@id/centerpoint"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>