Добавить нижний колонтитул в макет с двумя фрагментами

Я использую два макета с фрагментами, один для портретного режима и один для ландшафтного. Мне нужно добавить липкий нижний колонтитул к обоим макетам, и я успешно добавил его в портретный макет, но когда я использую аналогичный код для альбомного макета, он не работает. Если я устанавливаю layout_width фрагментов на 0dp, я не вижу ни одного фрагмента, если я устанавливаю layout_width на wrap_content или fill_parent, фрагменты перекрывают друг друга.

Это то, что у меня есть до сих пор:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
>
    <!-- Footer -->     
    <TextView 
            android:id="@+id/footer" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:layout_alignParentBottom="true"
     />
    <!-- Footer -->

    <fragment android:name="com.app.listing1"
            android:id="@+id/fragment1"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_above="@id/footer"            
     />

    <fragment android:name="com.app.listing2"
            android:id="@+id/fragment2"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_above="@id/footer"            
     />

</RelativeLayout>

РЕДАКТИРОВАТЬ

Я стал немного ближе к тому, что хочу. Если я поставлю заданную ширину фрагменту1, то получу то, что ищу, но это, очевидно, не идеально. По какой-то причине установка layout_width="wrap_content" для макета обоих фрагментов, а также макетов внутри каждого фрагмента приводит к тому, что первый фрагмент занимает весь экран:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
>
    <!-- Footer -->     
    <TextView 
            android:id="@+id/footer" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:layout_alignParentBottom="true"
     />
    <!-- Footer -->

    <fragment android:name="com.app.listing1"
            android:id="@+id/fragment1"
            android:layout_width="200dp"
            android:layout_height="fill_parent"
            android:layout_above="@id/footer"            
            android:layout_toLeftOf="@id/fragment2"
     />

    <fragment android:name="com.app.listing2"
            android:id="@+id/fragment2"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_above="@id/footer"            
            android:layout_toRightOf="@id/fragment1"
     />

</RelativeLayout>

person Kris B    schedule 07.04.2012    source источник


Ответы (1)


Отредактировано:

Фрагменты перекрывают друг друга, потому что вы не выровняли их в своем RelativeLayout. Если вы хотите, чтобы они располагались горизонтально, используйте layout_toRightOf или layout_toLeftOf.

person 207    schedule 07.04.2012
comment
Хм, это не сработало. Я добавил android:layout_alignParentLeft=true к первому фрагменту и android:layout_alignParentRight=true ко второму, но они все еще перекрываются - person Kris B; 08.04.2012
comment
Извините, я имел в виду left_of/right_of. Если вы хотите расположить свой фрагмент2 справа от фрагмента1, вы добавляете android:layout_toRightOf="@id/fragment1" к своему фрагменту2 и устанавливаете для своего фрагмента1 значение android:layout_width="wrap_content" - person 207; 08.04.2012
comment
Угу, все равно не получилось. Теперь он показывает только фрагмент1 по всему экрану. Знаете ли вы, повлияет ли на это содержимое фрагментов? У меня есть RelativeLayouts с layout_width и layout_height, установленными на fill_parent внутри каждого фрагмента. У меня такой ментальный блок, когда дело доходит до работы с макетами Android. - person Kris B; 08.04.2012
comment
Но ваше предположение верно :). Когда вы установите для своего фрагмента1 значение wrap_content, ваша ширина/высота будет такой же большой, как и его содержимое. Вы устанавливаете свой контент (дети) на fill_parent, чтобы ваш фрагмент1 обертывал fill_parent и был таким же большим, как ваш экран. Установите содержимое на wrap_content тоже - person 207; 08.04.2012
comment
Неудачно. :( Я установил каждый макет, который я могу придумать, на wrap_content. Я собираюсь еще немного повозиться с ним, потому что, вероятно, мне не хватает чего-то простого. Спасибо за вашу помощь. - person Kris B; 08.04.2012
comment
Возможно, представление вашего фрагмента1 занимает весь экран (например, TextView с длинной строкой). Если вы не можете решить эту проблему, опубликуйте два макета фрагмента. - person 207; 08.04.2012
comment
Проверьте изменения, которые я внес в ОП. Я становлюсь немного ближе, если устанавливаю заданную ширину для первого фрагмента. - person Kris B; 08.04.2012
comment
давайте продолжим это обсуждение в чате - person 207; 08.04.2012
comment
Эй, я понял это. Добавление layout_weight=50 дало мне оба фрагмента на экране. Спасибо за вашу помощь! - person Kris B; 08.04.2012
comment
Ничего, это не сработало. Эх, мне кажется, что работа с макетами Android похожа на одно определение безумия — делать одно и то же снова и снова и ожидать разных результатов. - person Kris B; 08.04.2012
comment
Здесь довольно сложно говорить в комментариях. Вы можете присоединиться к чату, и мы посмотрим, в чем проблема - person 207; 08.04.2012