如何使ListFragment仅占据屏幕的上半部分

时间:2012-03-20 10:17:25

标签: android android-listfragment

我正在尝试创建一个文件管理器应用程序,在其中列出屏幕上半部分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 个答案:

答案 0 :(得分:5)

首先,摆脱ScrollView。如果TitlesFragmentListFragment,则您无法可靠地将ListView(来自ListFragment)放入ScrollView

接下来,将片段的高度设置为0px。您无法可靠地使用match_content作为ListView的高度。

然后,要完全按百分比执行操作,还要将FrameLayout的高度设置为0px,然后根据需要指定权重(例如,40表示片段,60表示FrameLayout 1}})。