Позиционирование ListViews внутри Framelayout
-
27-10-2019 - |
Вопрос
Поэтому я пытаюсь создать экран, который имеет обзор List, и мне нужно иметь возможность пропустить еще один пользовательский горизонтальный список, прямо на нижнем крае экрана. Когда пользователь прокручивается на вертикальном списке, горизонтальный станет невидимым и появляется, когда прокрутка останавливается. Я полагал, что Framelayout будет моим лучшим выбором для перекрывающихся видов. Но я не могу сделать эту работу. Горизонтальный список, кажется, занимает все пространство экрана. Любые идеи? Это даже правильный подход? Я хочу иметь что -то похожее на фиксированный Div в HTML.
Вот мой XML:
Обновление-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>
Решение
Я заставил его работать, установив высоту внутренней относительной макета вместо использования «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>
Другие советы
Вы не можете отрегулировать представления. Framelayout. Так что вам будет лучше пойти на RELATIVELAYOUT. Анкет Или вы можете поместить свои списки в RelativeLayout или LinearLayout, а затем вы можете настроить.
Надеюсь, что это поможет вам. :)
Как сказал другой ответчик, вы можете использовать RELATIVELAYOUT:
- Установите Android: Layout_AlignParentleft | справа | Вверх
- Установите Android: Layout_AlignParentleft | справа | внизу = "true" для горизонтального представления списка (и высота к "wrap_content" или фиксированный размер)
Или, если вы хотите придерживаться Framelayout (возможно, по причинам производительности ...), вы можете добавить огромный Android: Layout_margintop к горизонтальному представлению списка. Но это решение уроднее, поскольку вам нужно установить точные значения. Например, если весь экран составляет высоту 320 дрп, и вы хотите, чтобы вид горизонтального списка был высотой 80 др, вам необходимо установить верхнюю маржу на 240dp. Однако, если вы запустите это на экране с различным соотношением сторон, горизонтальное представление списка будет уродливым.