Позиционирование ListViews внутри FrameLayout - PullRequest
0 голосов
/ 20 октября 2011

Итак, я пытаюсь создать экран, который имеет ListView и поверх которого мне нужно иметь возможность перемещать другой настраиваемый горизонтальный ListView прямо у нижнего края экрана. Когда пользователь прокручивает вертикальный список, горизонтальный становится невидимым и появляется снова, когда прокрутка прекращается. Я подумал, что FrameLayout будет лучшим выбором для перекрывающихся просмотров. Но я не могу заставить это работать. Горизонтальный список, кажется, занимает все пространство экрана. Есть идеи? Это даже правильный подход? Я хотел бы иметь что-то похожее на фиксированный div в HTML.
Вот мой XML:

UPDATE-1: Использовал RelativeLayout, как было предложено, но все еще не разрешен. Похоже, что HorizontalListView по-прежнему занимает весь экран. Я использую HorizintalListView из здесь

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android">

    <ListView
        android:id="@+id/messages" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:layout_marginTop="5dip" />


    <RelativeLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >

        <test.ui.app.HorizontalListView 
                android:id="@+id/folders"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" 
                android:background="#FFFFFF" />

    </RelativeLayout>



</RelativeLayout>

Ответы [ 3 ]

2 голосов
/ 24 октября 2011

Я заставил это работать, установив высоту внутреннего Относительного расположения самостоятельно вместо использования 'wrap_content'.

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android">

    <ListView
        android:id="@+id/messages" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" />


    <RelativeLayout 
        android:layout_width="wrap_content" 
        android:layout_height="80dip"
        android:layout_alignParentBottom="true" >

        <test.ui.app.HorizontalListView 
                android:id="@+id/folders"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" 
                android:background="#FFFFFF" />

    </RelativeLayout>



</RelativeLayout>
0 голосов
/ 20 октября 2011

Как сказал другой ответчик, вы можете использовать RelativeLayout:

  • set android: layout_alignParentLeft | Right | Top | Bottom = "true" для вертикального представления списка
  • set android: layout_alignParentLeft | Right | Bottom = "true" для горизонтального представления списка (и высоты до "wrap_content" или фиксированного размера)

Или, если вы действительно хотите придерживаться FrameLayout (может быть, из-за соображений производительности ...), вы можете добавить огромный android: layout_marginTop в горизонтальный список. Но это решение более утомительно, так как вам нужно установить точные значения. Например, если весь экран имеет высоту 320dp и вы хотите, чтобы горизонтальный вид списка был высотой 80dp, вам необходимо установить верхнее поле равным 240dp. Однако, если вы запустите это на экране с другим соотношением сторон, горизонтальный список будет уродливым.

0 голосов
/ 20 октября 2011

Вы не можете регулировать просмотры внутри FrameLayout . Так что вам будет лучше выбрать RelativeLayout .Или вы можете поместить свои списки в RelativeLayout или linearlayout, а затем настроить.

Надеюсь, это поможет вам.:)

...