ListView不在FrameLayout中使用完整空间

时间:2018-02-11 14:14:02

标签: android listview android-fragments layout android-framelayout

我有一个带有2个FrameLayout的活动布局:

 <?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="de.sioned.multivoc.AddWordActivity"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <include layout="@layout/toolbar_layout"/>

        <ScrollView
            android:id="@+id/scLeft"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <RelativeLayout
                android:id="@+id/paneLeft"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/paneLeftTop"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />

                <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/paneLeftBottom"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_below="@+id/paneLeftTop"/>
            </RelativeLayout>
        </ScrollView>
</android.support.design.widget.CoordinatorLayout>

第二个FrameLayout paneLeftBottom将在某些时候包含以下片段:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/lyTop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
...some static fields...
    </RelativeLayout>
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/lyTop">

    <ListView
        android:id="@+id/lvResult"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginLeft="16dp"/>
</RelativeLayout>

在此配置中,ListView仅显示其中一行的高度,而不是利用可用空间的多行。 ListView工作正常,但一次只显示一行。

当我将它放入双窗格横向布局时,相同的ListView片段工作正常。如何使ListView使用可用空间?

编辑:

通过切换到ScrollView中的LinearLayout找到部分解决方案。唯一的问题是,当我将所述片段加载到其中时,底部的Framelayout覆盖顶部FrameLayout的一点。但在这种情况下这是可以接受的,因为选择一些数据只是暂时的。

<ScrollView
    android:id="@+id/scLeft"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    >
    <LinearLayout
        android:id="@+id/paneLeft"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/paneLeftTop"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>

        <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/paneLeftBottom"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
    </LinearLayout>
</ScrollView>

1 个答案:

答案 0 :(得分:0)

这就在这里

                android:layout_width="match_parent"
                android:layout_height="match_parent"

应该是

                android:layout_width="match_parent"
                android:layout_height="wrap_content"