ScrollView嵌套ListView只显示一行

2019-01-15  本文已影响62人  smile夕颜

一 问题描述

      在布局中有时候需要ScrollView嵌套ListView,但发现listview只显示了一行数据,其他的需要滑动。

二 解决方案

1.把listView在布局文件中设置一个固定的高度,这样能显示多个item,但是有kennel还是显示不全(如果已知item高度和固定个数 可以用这种方式设置高度 item高*个数)。

2.因为item未知个数 需要listview设置数据后,动态计算list view的高度,并设置。以下为设置的代码。(复制以下代码,设置数据后调用该方法)

/**

* 动态设置ListView的高度

* @param listView

*/

public static void setListViewHeightBasedOnChildren(ListView listView) {

if(listView ==null)return;

    ListAdapter listAdapter = listView.getAdapter();

    if (listAdapter ==null) {

// pre-condition

        return;

    }

int totalHeight =0;

    for (int i =0; i < listAdapter.getCount(); i++) {

View listItem = listAdapter.getView(i, null, listView);

        listItem.measure(0, 0);

        totalHeight += listItem.getMeasuredHeight();

    }

ViewGroup.LayoutParams params = listView.getLayoutParams();

    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() -1));

    listView.setLayoutParams(params);

}

上一篇 下一篇

猜你喜欢

热点阅读