[随手记]ScrollView嵌套ExpandableListView展开问题
2015-09-12 14:49
337 查看
太懒,直接上代码:
这样就可以保证,无论展开还是收缩,ExpandableListView都重新计算高度。
public static void setListViewHeightBasedOnChildren(ExpandableListView listView) { //获取ListView对应的Adapter ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; for (int i = 0, len = listAdapter.getCount(); i < len; i++) { //listAdapter.getCount()返回数据项的数目 View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); //计算子项View 的宽高 totalHeight += listItem.getMeasuredHeight(); //统计所有子项的总高度 } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); //listView.getDividerHeight()获取子项间分隔符占用的高度 //params.height最后得到整个ListView完整显示需要的高度 listView.setLayoutParams(params); }
mAdapter = new ProjectNewAdapter(mContext, groupEntities, exlst); exlst.setAdapter(mAdapter); WindowManagerUtil.setListViewHeightBasedOnChildren(exlst);
exlst.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { // for (int i = 0, count = exlst // .getExpandableListAdapter().getGroupCount(); i < count; i++) { // if (groupPosition != i) {// 关闭其他分组 // exlst.collapseGroup(i); WindowManagerUtil.setListViewHeightBasedOnChildren(exlst); // } // } } }); exlst.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() { @Override public void onGroupCollapse(int groupPosition) { WindowManagerUtil.setListViewHeightBasedOnChildren(exlst); } });
这样就可以保证,无论展开还是收缩,ExpandableListView都重新计算高度。
相关文章推荐
- vijos P1071新年趣事之打牌
- CXF 发布 Web Service
- 分分钟搞懂JS-闭包函数
- a demo for how to use QThread
- Spring 定时任务之 @Scheduled cron表达式
- SSM框架整合例子
- jquery base64 加密解密 request 文本字段传输
- Atlas 安装和配置
- 图片的异步下载
- ExtJs jsonStore加载的监听
- 【智力问题】25匹马赛跑,每次只能跑5匹马,最快能赛几次找出跑得最快的3匹马?赛跑不能计时,并假设每匹马的速度是恒定不变的。
- JS-面向对象-封装
- 软件工程的文档
- (5.2.2)TCP和UDP的区别(转)
- Java学习之基本数据类型
- UIViewContentMode
- Swift程式语言(中国版)(8.8 %)
- CentOS6.3 安装 memcached
- 开发web app并且使用phonegap下载及打开附件
- Ubuntu14.04使用内存盘