Android/layout: как создать компоновку заголовка

Как мне создать следующий макет в Android?

Я хочу "заголовок", то есть заголовок, который остается неизменным во все времена. Единственное, что должно измениться, это область под заголовком.

Подумайте об этом как о веб-странице, где область содержимого - это то, где все это происходит =)

+--------------------+
| H E A D E R        |
+--------------------+
|                    |
|                    |
|                    |
|  C O N T E N T     |
|                    |
|                    |
|                    |
+--------------------+

Конечно, его достаточно легко создать LinearLayot, добавить вид сверху, а затем еще один вид ниже - tada! Но то, что Im after - это то, как вы "настраиваете" или разрабатываете проект, поэтому его легко изменить в содержании.

Мне действительно нравится, чтобы иметь возможность "прокручивать" (см. здесь) область, а затем просто "перевернуть", новый вид/вещь в области содержимого, но сохраните тот же заголовок.

То, что я действительно скучаю, - это обширная библиотека примеров layoyt...

рассматривает

Ответ 1

Вы можете создать файл макета для своего заголовка. В верхней части макета для каждой активности содержимого укажите файл макета, например:

<include android:id="@+id/header"
         layout="@layout/my_header"
         android:layout_height="wrap_content"
         android:layout_width="fill_parent"/>

Как именно вы получите заголовок, чтобы он оставался в верхней части макета контента, будет отличаться в зависимости от остальной части вашего макета. Вы можете использовать LinearLayout с ориентацией = "вертикаль" или относительный макет с align_parentTop = "true" в вашем заявлении include.

Эта документация по Android содержит хорошее резюме основных типов макетов.

Ответ 2

Другим возможным решением является использование ViewFlipper или ViewSwitcher в качестве раздела "Контент", в котором вы включаете различные типы контента, которые вы хотите перевернуть, и просто установите, какой вид вы хотите отобразить (вы можете делать анимации на флип/переключатель тоже). Недостатком этого является то, что ваш контент должен быть добавлен в основной макет, каждый из которых является дочерним элементом ViewFlipper/ViewSwitcher (может использовать или также сохранять макеты в отдельных XML файлах).

Делегирование передачи коммутируемого контента на другое действие не так прямолинейно. TabHost/TabWidget позволяет это, когда область содержимого хоста вкладки генерируется из другого действия. Возможно, вы сможете использовать код вкладки в качестве примера, если вам нужно выполнить его таким образом.