[分享]ScrollView嵌套ListView只显示一行解决方案_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2030 | 回复: 0   主题: [分享]ScrollView嵌套ListView只显示一行解决方案        下一篇 
CinderellaPink
注册用户
等级:少校
经验:1071
发帖:56
精华:0
注册:2015-7-15
状态:离线
发送短消息息给CinderellaPink 加好友    发送短消息息给CinderellaPink 发消息
发表于: IP:您无权察看 2015-7-15 14:34:45 | [全部帖] [楼主帖] 楼主

今天写代码,在ScrollView里边嵌套了个ListView,后边就发现数据源里好多数据,但ListView只是显示1行。
各种debug,打log,数据什么的都没问题,上网百度了下,发现原来是ScrollView嵌套ListView的一个Bug。
在ScrollView中嵌套ListView空间,无法正确的计算ListView的大小,故可以通过代码,根据当前的ListView的列表项计算列表的尺寸。

private void setListViewHeightBasedOnChildren(ListView listView) {
                  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);
     }
在ListView声明之后调用就可以了。

     看到大家的回复,还有更简单的方法:
     不需要硬着算,只需要自定义ListView,重写下OnMeasured方法就好了,受教了,谢谢
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
           int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
           super.onMeasure(widthMeasureSpec, mExpandSpec);

    }




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论