ScrollView中嵌套ListView/ExpandableListView显示问题
来源:互联网 发布:软件项目经理责任制 编辑:程序博客网 时间:2024/05/21 05:07
android 官方不支持scrollview内部嵌套一个scrollview,所以listview嵌套listview或者scrollview嵌套ExpandableListView的话,listview的item是显示不全的,公司最近的项目中涉及到了这个问题,解决方法如下:
在设置了adapter之后,调用计算高度的方法即可;
ScrollView中嵌套ListView:
public void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { 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中嵌套ExpandableListView:
public static void setListViewHeightBasedOnChildren(ExpandableListView listView ) { // 获取ListView对应的Adapter ExpandableListAdapter listAdapter = listView.getExpandableListAdapter(); if (listAdapter == null) { // pre -condition return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getGroupCount(); i++) { // listAdapter.getCount()返回数据项的数目 View listgroupItem = listAdapter .getGroupView(i, true, null, listView ); listgroupItem.measure(0, 0); // 计算子项View 的宽高 totalHeight += listgroupItem .getMeasuredHeight(); // 统计所有子项的总高度 System. out.println("height : group" +i +"次" +totalHeight ); for (int j = 0; j < listAdapter.getChildrenCount( i); j++) { View listchildItem = listAdapter .getChildView(i, j, false , null, listView); listchildItem.measure(0, 0); // 计算子项View 的宽高 totalHeight += listchildItem.getMeasuredHeight(); // 统计所有子项的总高度 System. out.println("height :" +"group:" +i +" child:"+j+"次"+ totalHeight); } } ViewGroup.LayoutParams params = listView .getLayoutParams(); params.height = totalHeight + ( listView.getDividerHeight() * (listAdapter.getGroupCount() - 1)); // listView.getDividerHeight()获取子项间分隔符占用的高度 // params.height最后得到整个ListView完整显示需要的高度 listView.setLayoutParams(params ); }
前者是实现项目中,订单中心一个订单对应多个商品list展示,后者是购物车一个人对应多个商品并添加支付等信息时使用,后者根据前者修改的,网上关于ExpandableListView计算高度的好像挺少的,就自己改写了。
OVER。
0 0
- ScrollView中嵌套ListView/ExpandableListView显示问题
- ScrollView中嵌套ListView或ExpandableListView时显示不全的问题
- android ScrollView中嵌套ListView显示问题
- ScrollView 中嵌套ListView显示问题
- android中Scrollview 嵌套ListView显示问题
- Android ScrollView中嵌套ExpandableListView,item不显示的问题
- Android ScrollView中嵌套ListView或ExpandableListView
- ScrollView嵌套ExpandableListView显示不正常的问题
- 在scrollview中嵌套listview,listview显示不全问题
- android scrollview中嵌套expandablelistview高度问题
- ScrollView 嵌套 ListView or ExpandableListView显示问题(一行属性搞定)
- Scrollview中嵌套Expandablelistview
- ScrollView中嵌套ExpandableListView
- scrollview嵌套ExpandableListView、ListView导致显示高度不全
- ScrollView中嵌套ListView问题
- ScrollView中嵌套ListView只显示一行问题
- Android 解决scrollview中嵌套listview、GridView显示不完全问题
- android中ScrollView嵌套ListView只显示一条item问题
- Swift学习之UITableView的实现以及滑动删除
- 运维基础-windows下安装jdk
- 了解的程序员越多,我越觉得程序员是一群有趣的人
- 如何手动实现C语言中的字符串操作
- OCDay2-NSString、常见错误、结构体为属性时的访问、对象访问变量与方法的方式、#pragma mark\
- ScrollView中嵌套ListView/ExpandableListView显示问题
- P14 (*) Duplicate the elements of a list.
- Ubuntu下wget Oracle JDK1.7
- 生成指定个数的随机码,同时包含大小写字母和数字【H3C笔试题】
- leveldb资料整理
- java异常处理<2>__笔记(18)
- 柔性数组
- 微信公众平台之CURL应用access_token
- 找出链表的中间结点 C语言实现