Проблема многослойной разметки - PullRequest
0 голосов
/ 10 марта 2010

Я пытаюсь создать макет со следующими слоями (снизу вверх):

  1. Вкладка
  2. Фоновое изображение, охватывающее все страницы вкладки
  3. Передний планизображение, покрывающее 75% вкладки
  4. Макет таблицы, охватывающий 90% основного изображения.Это отобразит информацию.

Когда пользователь прокручивает экран до правого слоя, 3 и 4 будут изменены для отображения другого изображения и информации.Если пользователь прокручивает влево, будут отображаться исходные слои 3 и 4.

Я понимаю, как работают жесты и анимация, так что это не проблема, но как мне создать макет?

Спасибо.

1 Ответ

1 голос
/ 10 марта 2010

Я думаю, что ваш вопрос, вероятно, более сложен, чем я понимаю, но вам нужно что-то вроде этого?

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@android:id/tabhost">

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

        <TabWidget android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@android:id/tabs"/>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <include layout="@layout/some_xml_file"/>

        </FrameLayout>
</LinearLayout>
</TabHost>

Тогда ваш файл some_xml_file определен так:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/start_menu_background"
    android:orientation="vertical"
    android:id="@+id/just_a_test">

    <RelativeLayout android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:background="@drawable/techno"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true">

        <TableLayout android:layout_height="wrap_content"
            android:layout_width="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentBottom="true">

            <TableRow>
                <TextView android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Hello world."/>
                <TextView android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="I'm another cell"/>
                </TableRow>

            <TableRow>
                <TextView android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Just more stuff"/>
                <TextView android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="And one last one"/>
            </TableRow>
        </TableLayout>
    </RelativeLayout>
</RelativeLayout>

Это дает вам вложенный макет с вкладками в верхней части, содержащий вид с собственным фоном (внешний RelativeLayout с @ drawable / start_menu_background), затем этот имеет собственный фон (внутренний RelativeLayout с @ drawable / techo), в свою очередь, есть таблица с двумя строками.

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

Конечно, чтобы это работало, вам нужно будет вставить весь код для работы TabHosts. Посмотрите эти два примера ( официальное руководство и еще один ), если вы еще этого не сделали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...