Как сделать так, чтобы ListFragment занимал только верхнюю половину экрана - PullRequest
1 голос
/ 20 марта 2012

Я пытаюсь создать приложение для управления файлами, в котором я перечисляю содержимое определенного каталога в ListFragment в верхней половине экрана (само собой разумеется, что этот список можно прокручивать), и когда пользователь нажимает на определенное файл / папка, связанные с ней метаданные должны быть видны в FrameLayout, расположенном прямо под фрагментом, вместе с миниатюрным изображением типа файла. Вот мой макет:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent" 
android:layout_height="match_parent"
android:background="#00000000">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.4" >

<fragment
    android:id="@+id/titles"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    class="com.test.fileManager.FileManagerActivity$TitlesFragment"
/>

</ScrollView>

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.6"
    android:background="#00000000"
    >
</FrameLayout>

</LinearLayout>

Сначала я использовал свойство layout_weight без тегов ScrollView, но эти весовые свойства просто не соблюдаются фрагментом, и список простирается до нижней части экрана.

Когда я заключаю фрагмент в теги ScrollView (я знаю, что это не очень хорошая идея!), Я вижу только одну запись списка за раз.

Есть ли в любом случае, когда я могу сделать ListFragment занимать верхние 40% экрана и отображать прокручиваемый список в этом 40% экрана, когда это необходимо?

1 Ответ

5 голосов
/ 20 марта 2012

Во-первых, избавьтесь от ScrollView.Если TitlesFragment является ListFragment, вы не можете надежно поместить ListView (из ListFragment) в ScrollView.

Далее установите для высоты фрагмента значение 0px,Вы не можете надежно использовать match_content в качестве высоты ListView.

Затем, чтобы сделать вещи чисто в процентах, также установите высоту вашего FrameLayout в 0px, а затем присвойте свои веса какВы хотите (например, 40 для фрагмента и 60 в FrameLayout).

...