Позиционирование ListViews внутри FrameLayout

71
7

Поэтому я пытаюсь создать экран с 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>

спросил(а) 2011-10-20T15:39:00+04:00 8 лет, 1 месяц назад
3
Решение
64

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

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

ответил(а) 2011-10-20T15:43:00+04:00 8 лет, 1 месяц назад
Еще 2 ответа
57

Я получил его для работы, установив высоту внутреннего Relative Layout самостоятельно, вместо использования "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>

ответил(а) 2011-10-24T12:15:00+04:00 8 лет, 1 месяц назад
32

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

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

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

ответил(а) 2011-10-20T17:40:00+04:00 8 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема