Listview android - 动态数据加载后更改高度

时间:2016-01-11 07:31:52

标签: android android-layout listview android-listview

我有一个像这样的Android布局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/headingView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:paddingTop="@dimen/value_5dp">

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

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

        <LinearLayout
            android:id="@+id/linearLayout2"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/relativeLayout1"
            android:layout_centerHorizontal="true"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingBottom="5dp"
                android:paddingLeft="10dp"
                android:paddingTop="5dp"
                android:visibility="gone" />

        <LinearLayout
            android:id="@+id/list_items"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:background="@color/mt_gray_color"
            android:fadeScrollbars="false" >

            <TextView
                android:id="@+id/itemHeading"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:padding="10dp"

                android:textStyle="bold"
                android:background="#f2f2f2"
                android:layout_marginTop="15dp"
                android:visibility="gone"/>

            <ListView
                android:id="@+id/mylist"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:padding="@dimen/value_5dp"
                android:minHeight="500dp" />

        </LinearLayout>
    </LinearLayout>

</ScrollView>
  • 我在加载此页面/片段后在ListView中动态加载数据。

  • listview包含多个元素,我期待它会在listview中显示列表,而不是滚动,因为我已将其设为WRAP_CONTENT。

我可能有错误的理解以及我想要理解的内容并找到一个解决方案,我怎样才能避免滚动条并且列表视图中列出的所有项目都没有滚动。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以在运行时计算ListView的所有子项的大小,然后将其高度设置为所有子项的总高度。您可以使用此方法:

public void justifyListView(ListView listView) {

    ListAdapter adapter = listView.getAdapter();

    if (adapter == null) {
        return;
    }
    ViewGroup vg = listView;
    int totalHeight = 0;

    for (int i = 0; i < adapter.getCount(); i++) {
        View listItem = adapter.getView(i, null, vg);
        listItem.measure(0, 0);
        totalHeight += listItem.getMeasuredHeight();
    }
    ViewGroup.LayoutParams par = listView.getLayoutParams();
    par.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1));
    listView.setLayoutParams(par);
    listView.requestLayout();
}

答案 1 :(得分:0)

您可以在数据更改时更改listView的高度。