计算ListView的高度终极版,考虑到多行textview的情况
来源:互联网 发布:unity3d 寻路插件贴吧 编辑:程序博客网 时间:2024/06/06 09:03
在一些时候,我们需要计算Listview的情况,一般来说,网上的许多代码都可以完成计算高度,但是如果遇到textview多行的情况,往往发现计算就不准确了,我找了网上一些方案,结合自己的实验,给出一套最终的解决方案,希望对大家有所帮助
private int getListviewHeight(ListView pull) { ListAdapter listAdapter = pull.getAdapter(); if (listAdapter == null) { return 0; } DisplayMetrics dm =getResources().getDisplayMetrics(); int w_screen = dm.widthPixels; int totalHeight = 0; int listViewWidth = w_screen-dip2px(this,16); //listView在布局时的宽度 int widthSpec = View.MeasureSpec.makeMeasureSpec(listViewWidth, View.MeasureSpec.AT_MOST); for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, pull); listItem.measure(widthSpec, 0); int itemHeight = listItem.getMeasuredHeight(); totalHeight += itemHeight; } // 减掉底部分割线的高度 int historyHeight = totalHeight + (pull.getDividerHeight() * listAdapter.getCount() - 1); return historyHeight; }其中 dip2px的将dp的数值转化为对应px,实现方法如下:
public static int dip2px(Context context, float dipValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(dipValue * scale + 0.5f); }
经过笔者验证,无论textview多少行,计算出来的高度是正确的,与网上许多代码不同的地方,就是
listItem.measure(widthSpec, 0);网上传入的参数基本都是(0,0),这到底有什么区别呢?在实现listview的时候,我们往往不会贴边显示,所以会左右之间留有一定的空间,如果传入的(0,0),然后代码去measure,就会出错,它把你左右的间隙也计算进去了,单行的时候textview还好,如果是多行,错误会非常明显。
这个函数实现传入的第一个参数就是listview中,每一项item的实际宽度,所以上面的代码有一句是
int listViewWidth = w_screen-dip2px(this,16);
希望该代码对大家有所帮助!
阅读全文
1 0
- 计算ListView的高度终极版,考虑到多行textview的情况
- 计算ListView的高度终极版,考虑到多行textview的情况
- 计算listview的高度
- 计算listview的高度
- Listview的Item高度计算
- ListView的高度计算公式
- android 计算listview的高度
- 重新计算ListView的高度
- 自定义TextView,解决计算listView中item高度的时候,如果其中的TextView字数超过一行,只计算到一行高度的问题
- 编程时该考虑到的特殊情况
- listview设置计算item的高度 获取listview的高度
- 计算ListView中一个item的高度
- 计算ListView和GridView的高度
- 动态计算ListView高度的工具类
- 关于ScrollView中嵌套listView,textView存在多行时,listView高度计算不正确。
- scroll嵌套多个listview,listview中的TextView超过一行,只计算 一行高度
- 计算Listview的高度解决Scrollview和listview的冲突
- scrollview中嵌入listview动态计算listview的高度
- Django学习(4):Models
- xlistview
- 第二章 正则表达式位置匹配攻略
- Qt停靠窗口QDockWidget应用
- html回顾及vue.js在html中使用(二)
- 计算ListView的高度终极版,考虑到多行textview的情况
- (并查集)How Many Answers Are Wrong--HDOJ
- LeetCode 447. Number of Boomerangs
- #1071
- 微信小程序开发 ---5
- iOS Xcode使用spine导出动画
- chrome 常用插件推荐
- 常用Java正则表达式
- 平移 缩放矩阵