安卓开发——问题:ScrollView中嵌套ListView时,listview只显示一行
来源:互联网 发布:苹果炒股软件下载 编辑:程序博客网 时间:2024/05/29 16:12
今天写项目时,遇到一个问题,自己给listview适配了好几条数据,可它打死就只显示一条,不管怎么改属性,怎么打log,就是发现不了问题在哪。
后来在网上才寻找到原因,tmd,竟然是ScrollView嵌套ListView时的一个Bug,即当ScrollView嵌套ListView时,会无法正确的计算ListView的大小,心塞塞。
解决方法如下:
一、直接把包含ListView控件的ScrollView控件从布局文件中去除,留下ListView控件,这是最简单快捷的解决办法(如果一定要在ScrollView中包含ListView,则参考解决方案2)
二、通过代码,根据当前的ListView的列表项计算列表的尺寸
代码如下:
//根据当前的ListView的列表项计算列表的尺寸, // 解决ScrollView嵌套ListView时,会无法正确的计算ListView的大小 public void setListViewHeightBasedOnChildren(ListView listView) { /** * by zsx * 获取ListView对应的Adapter * 这里的adapter是你为listview所添加的adapter,可以是原始adapter, * 也可以是自己定义的adapter,本人这里的articleadpter是自己定义的adapter */ ArticleAdapter listAdapter = (ArticleAdapter) 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代码后,使用这个函数。
网上大多数解决方法都是这样的,原博文:http://blog.csdn.net/p106786860/article/details/10461015此外:如果你是动态添加listview数据的话,需要在adapter.notifyDataSetChanged()代码后使用这个函数。
1 0
- 安卓开发——问题:ScrollView中嵌套ListView时,listview只显示一行
- ScrollView中嵌套ListView只显示一行问题
- ScrollView中嵌套ListView只显示一行的问题
- 解决ScrollView嵌套ListView问题 ListView只显示一行问题
- ScrollView中嵌套ListView,ListView只显示一行解决办法
- Android中解决scrollview中嵌套listview的listview只显示一行的问题
- MeasureSpec学习(解决ScrollView中嵌套ListView,ListView只显示一行的问题)
- 安卓简单开发--listview在Scrollview中只显示一行
- 《Android那些事》——ScrollView嵌套ListView只显示一行的问题的解决方法
- ScrollView嵌套ListView只显示一行的问题
- ScrollView嵌套ListView只显示一行的问题
- 解决ScrollView嵌套ListView只显示一行的问题
- ScrollView嵌套ListView只显示一行的问题
- scrollview嵌套listview只显示一行的问题
- 日积月累:ScrollView嵌套ListView只显示一行
- ScrollView嵌套ListView解决只显示一行
- ScrollView嵌套ListView只显示一行
- 穷年累月:ScrollView嵌套ListView只显示一行
- HDU 4411 Arrest 费用流
- CQOI2016省选游记
- 使用Loadrunner 调用Webservice接口测试
- ios 图片裁剪
- Cascade_Master的一个小bug修复
- 安卓开发——问题:ScrollView中嵌套ListView时,listview只显示一行
- Android开发问题记录
- 【blkid】查询或查看磁盘设备的相关属性
- Android Drawable之Shape使用小案例(一)
- Android开发问题:底部弹出popwindow,会被某些手机底部的菜单栏挡住
- Android应用市场(发布APK)及多渠道打包
- bzoj 3451: Tyvj1953 Normal
- 树莓派3代Raspberry3 B型小白入门第一步
- 使用7zip搜索jar中的class文件