美文网首页
ScrollView嵌套ListView只显示一行

ScrollView嵌套ListView只显示一行

作者: smile夕颜 | 来源:发表于2019-01-15 11:14 被阅读62次

一 问题描述

      在布局中有时候需要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);

}

相关文章

网友评论

      本文标题:ScrollView嵌套ListView只显示一行

      本文链接:https://www.haomeiwen.com/subject/elvedqtx.html