当我们需要在listView外层嵌套ScrollView,这样两个scroll滚动效果会产生相互影响,为了避免这个,我们通常是禁止listView滚动,

把ListView总高度计算出来,完全显示。

计算listView的总高度只需要自定义一个mylistView继承listView,重写onMeasure(...)方法就搞定了。

 @Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);}

但是当listView设置了dividerHeight属性之后上面的方法就失效了,因为上面的方法 没有加上每个Item之间的间隔dividerHeight。

我们怎么办呢,通过在网上的搜索,发现有其他网友分享,可以先加载出listView的数据,然后通过for循环计算每个item的高度,再加和

得到我们想要的listView的总高度。

代码如下:

public static void setListViewHeightBasedOnChildren(ListView listView) {//获取ListView对应的AdapterListAdapter listAdapter = listView.getAdapter();if (listAdapter == null) {// pre-conditionreturn;}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()+listView.getDividerHeight()/2; //统计所有子项+dividerheight的总高度}ViewGroup.LayoutParams params = listView.getLayoutParams();params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));//listView.getDividerHeight()获取子项间分隔符占用的高度//params.height最后得到整个ListView完整显示需要的高度listView.setLayoutParams(params);}

注意:1、setListViewHeiBasedOnChildren(listView),在数据添加之后使用

if (addressResult != null && addressResult.size() >= 0) {addressadapter = new AddressItemAdapter(getApplicationContext(), addressResult);addressadapter.addressListener(AddressActivity.this);addressListView.setAdapter(addressadapter);setListViewHeightBasedOnChildren(addressListView);}

2、ListView的Item的根目录必须是LinearLayout

3、记得addressadapter.notifyDataSetChanged();刷新adapter更新之后要调用

ListView嵌套ScrollView后,设置dividerHeight属性后高度计算相关推荐

  1. WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题解决方案

    在做winform程序开发时,我用DataSource绑定了ListBox中的Item,但是当我进行一些添加.删除操作时就报了这个错"设置DataSource属性后无法修改项集合" ...

  2. Kindeditor 图片粘贴上传后设置图片属性

    之前转载过一篇 Kindeditor 图片粘贴上传(https://blog.csdn.net/Dongguabai/article/details/100116608)的博客.但是还是存在一个问题, ...

  3. Android之TextView设置autoLink属性后自定义跳转到指定界面

    在TextView 中设置autoLink 属性可以自动识别Web URL.电话号码.电子邮件地址.添加下划线改变字体颜色并实现点击事件,支持自动识别的类型: android:autoLink=&qu ...

  4. 右键我的电脑后点击属性没有高级系统设置(桌面我的电脑等图标的恢复)

    右键我的电脑后点击属性没有高级系统设置(桌面我的电脑等图标的恢复) **解决方法** **双击我的电脑,在打开的窗口中右键点击属性.即可打开我的电脑的属性** **在电脑管家中还原** **系统自带的 ...

  5. div+css中设置了float属性后如何让外层的高度随着内层的高度大小自动调整

    overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很了解. 一提到清除浮动,我们就会想到另外一个CSS样式 ...

  6. antd 设置表头属性_解决react使用antd table组件固定表头后,表头和表体列不对齐以及配置fixed固定左右侧后行高度不对齐...

    一.固定表头后表体列和表头不对齐 此问题可能在antd3.24.0版本之前都存在,反正3.16.2版本是存在这个问题的,如果是3.24.0之前的版本估计只能通过修改css样式解决. 按照官网说的: 1 ...

  7. 给元素设置鼠标移入后变为手型的属性

    给元素设置鼠标移入后变为手型的属性 鼠标移到该元素上时形状变为小手 cursor: pointer; 举例 <style>div{cursor: pointer;} </style& ...

  8. qt vs 不出来dos窗口_VS嵌入QT后,建立QT工程后printf和cout无效,无法产生控制台应用程序窗口,需设置工程属性...

    在 VC++ 中使用 OpenCV ,一般是建立一个 win32 console application 项目,当运 行此类程序的时候,默认情况下会有一个类似 DOS 窗口的 console 窗口,供 ...

  9. android:autolink 颜色,Android设置完autoLink属性后自定义跳转到指定界面

    在TextView 中设置autoLink 属性可以自动识别Web URL,电话号码,电子邮件地址添加下划线改变字体颜色并实现点击事件,支持自动识别的类型: android:autoLink=&quo ...

  10. Android 设置完autoLink属性后自定义跳转到指定界面

    在TextView 中设置autoLink 属性可以自动识别Web URL,电话号码,电子邮件地址添加下划线改变字体颜色并实现点击事件,支持自动识别的类型: android:autoLink=&quo ...

最新文章

  1. iscsi网络磁盘共享
  2. Sencha Touch 2.3 自定义主题皮肤,颜色
  3. FragmentTabHost切换Fragment时避免重复加载UI
  4. 反射(操作MetaData)
  5. spring websocket源码分析续Handler的使用
  6. Cocos2d-X开发中国象棋《九》走棋规则
  7. mysql 出现 quot_MYSQL 新版出现 Client does_mysql _ 搞代码
  8. SharePoint2010添加webpart找不到内容编辑器
  9. 【报告分享】2020人工智能+安防行业应用研究分析报告.pdf(附下载链接)
  10. 示波器的使用和李萨如图形
  11. 算法入门基础知识总结
  12. mac打开软件显示没有权限不能打开
  13. Project2013快速使用入门教程(简单四步)
  14. python画图旋转图形_python – 如何将matplotlib图旋转90度?
  15. 简单好用的在线P图工具,一定记得收藏
  16. 使用avue图标选择器出现图标无法显示解决
  17. [Android UI] graphics
  18. 关于书籍“Composing Programs”1.6.3自定义函数的嵌套定义与非嵌套定义的比较
  19. 让指定slid值对于的图层可见
  20. 用C#与数据库实现吃货联盟订餐系统

热门文章

  1. 主子式大于等于零的矩阵是半正定矩阵的证明方法之二
  2. 导入、build elasticsearch源码异常
  3. Raki的读paper小记:Style Transformer
  4. python把工作簿拆分为工作表_python利用openpyxl拆分多个工作表的工作簿的方法
  5. Asp.net Core 一个实用的自定义TagHelpers
  6. BZOJ 1078: [SCOI2008]斜堆
  7. JAVA共通関数--シングルクォーテーションをSQL用に追加する
  8. C语言数据类型大小分析(基于VC2005编译器)
  9. volatile的总结
  10. redis连接过多导致 redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool