Android NestedScrollView嵌套Listview显示不全问题解决

问题描述:

在开发的过程当中,由于手机屏幕的大小的限制,经常需要使用滑动的方式来显示更多的内容。在最近的工作中,遇见一个需求,需要将ListView嵌套到NestedScrollView中显示



    
    

            
            
            


    

 

问题: 

结果就是listview值显示一行

解决办法:

 

不采用自定义listview的方式,因为在ScrollView中嵌套ListView空间,无法正确的计算ListView的大小,故可以通过代码,根据当前的ListView的列表项计算列表的尺寸。实现代码如下:

public void setListViewHeightBasedOnChildren(ListView listView) {
        // 获取ListView对应的Adapter
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            return;
        }
        int totalHeight = 0;
        for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
            // listAdapter.getCount()返回数据项的数目
            View listItem = listAdapter.getView(i, null, listView);
            // 计算子项View 的宽高
            listItem.measure(0, 0);
            // 统计所有子项的总高度
            totalHeight += listItem.getMeasuredHeight();
        }
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        // listView.getDividerHeight()获取子项间分隔符占用的高度
        // params.height最后得到整个ListView完整显示需要的高度
        listView.setLayoutParams(params);
    }

 设置完adapter之后直接调用这个方法,重新结算listview的高度就完美解决!

 

你可能感兴趣的:(code小生)