ScrollView中的ListView与我的TextView重叠

时间:2015-07-20 19:01:22

标签: android xml android-layout android-listview android-scrollview

我已经看到了很多与我有关的问题,然而,这些都没有奏效。我目前正在设计一个视图,其中我在ScrollView中有四个ListView,我想制作整个ScrollView滚动,同时显示ListViews中的所有项目。那没问题;但是,列表视图会不同地重叠我的headertexts以用于不同的列表视图。

我尝试过边距和填充;没有人工作。我还尝试将scrollLayout重新制作为LinearLayout。我还尝试将文本放在单独的LinearLayouts中,与ListView分开,但这也不起作用。

下面是我的src代码。有谁知道如何使文本与listViews中的Top项不重叠?顺便说一句,“最佳结果”,上面的那个,完全没问题。

  

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/scrollView"
    android:layout_alignParentTop="true">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/scrollLayout">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:id="@+id/topResultLayout">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/topResultTitle"
                android:textSize="20sp"
                android:textIsSelectable="false"
                android:layout_alignParentStart="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:textColor="#000000" />

            <ListView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/topResultList"
                android:layout_below="@id/topResultTitle"/>

        </RelativeLayout>

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

            android:layout_centerHorizontal="true"
            android:id="@+id/streamResultLayout"
            android:layout_below="@id/topResultLayout">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/streamResultTitle"
                android:textSize="20sp"
                android:textIsSelectable="false"
                android:layout_alignParentStart="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:textColor="#000000" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/seeAllStreams"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:textColor="#000000"
                android:textSize="14sp"
                android:layout_above="@+id/streamResultList" />





            <ListView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/streamResultList"
                android:layout_below="@id/streamResultTitle"/>
        </RelativeLayout>

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

            android:layout_centerHorizontal="true"
            android:id="@+id/broadcasterResultLayout"
            android:layout_below="@id/streamResultLayout">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/broadcasterResultTitle"
                android:layout_alignParentStart="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:textSize="20sp"
                android:textIsSelectable="false"

                android:textColor="#000000" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/seeAllBroadcasters"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"

                android:textColor="#000000"
                android:textSize="14sp" />




            <ListView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/broadcasterResultList"
                android:layout_below="@id/broadcasterResultTitle"/>
        </RelativeLayout>

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

            android:layout_centerHorizontal="true"
            android:id="@+id/tagResultLayout"
            android:layout_below="@id/broadcasterResultLayout"
            android:layout_alignParentBottom="true">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tagResultTitle"
                android:layout_alignParentStart="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:textSize="20sp"
                android:textIsSelectable="false"
                android:textColor="#000000" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/seeAllTags"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:textColor="#000000"
                android:textSize="14sp" />




            <ListView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tagResultList"
                android:layout_below="@id/tagResultTitle"/>
        </RelativeLayout>
    </RelativeLayout>
</ScrollView>

1 个答案:

答案 0 :(得分:1)

public static void setListViewHeightBasedOnChildren(ListView listView, ListAdapter adapter)
    {
        ListAdapter listAdapter = adapter;

        if (listAdapter == null) {
            return;
        }

        int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.UNSPECIFIED);
        int totalHeight = 0;
        View view = null;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            view = listAdapter.getView(i, view, listView);
            if (i == 0) {
                view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, ViewGroup.LayoutParams.WRAP_CONTENT));
            }
            view.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
            totalHeight += view.getMeasuredHeight();
        }
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight;
        listView.setLayoutParams(params);
        listView.requestLayout();
    }