scrollview里嵌套listview的问题(一)

原创 2015年11月20日 16:52:53

Q: scrollview 中的listview只显示一个item

R: 原理:sceollview不能计算listview的高度

     方法1:自己计算listview的高度 然后给listview设置高度

public void setListViewHeightBasedOnChildren(ListView listView) {
        // 获取ListView对应的Adapter
        if (listView == null) {
            return;
        }
        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);
    }
     方法2:自定义listview重写 onMeasure()方法

public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);

        super.onMeasure(widthMeasureSpec, mExpandSpec);
    }
Q:使用方法一后还是没有解决问题?

R:这里我们注意到 

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();
        }
这里我们需要用到adapter里的数据 ,好了说道这里可能很多人已经明白问题所在。我们的listview里的数据一般都是来源于网络,自然开异步耗时下载数据,好了问题来了,我们计算高度的方法(也就是方法一),如果你在数据还没有加载完成的时候就调用了此方法,那自然我们得到的结果就不正确了,所以我只能在下载数据完成后的地方再调用我们的方法一,这个时候问题就解决了!

scrollview与listview嵌套问题

  • 2016年01月21日 15:14
  • 5.83MB
  • 下载

Android ScrollView中嵌套ListView,滑动冲突问题的解决

在项目开发过程,遇到ScrollView中嵌套ListView,结果点击ListView上下滑动时,整个页面滑动,也就是滑动事件被ScrollView消费掉了,造成listView无法滑动的结果,然后...

ScrollView嵌套ListView问题

  • 2015年09月08日 23:17
  • 1.47MB
  • 下载

ScrollView嵌套ListView——解决滑动冲突问题

//布局中的代码实现 一个简单的布局设置 演义滑动冲突
  • Mannver
  • Mannver
  • 2016年04月12日 20:49
  • 10800

ScrollView嵌套ListView问题解决方案

两种方案1.根据item计算listView高度两个方法,第一个是计算竖向listview,第二个计算横向lisTVIEWpublic class ListViewMeasureHeight { ...

详解嵌套ListView、ScrollView布局显示不全的问题

在项目开发中,可能经常遇到嵌套ListView、ScrollView的问题,百度一搜,都是现成的代码,而且都是一样的,就是重写onMeasure方法,但是为什么要那么写,估计就没多少人知道了,这里进行...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:scrollview里嵌套listview的问题(一)
举报原因:
原因补充:

(最多只允许输入30个字)