嵌套ListView&GridView测量其高度的方法
来源:互联网 发布:mac苹果商店 编辑:程序博客网 时间:2024/06/16 18:11
总会遇到在ScrollView
中嵌套ListView
,或者在ListView
中嵌套GrideView
等等的情景,在这种情景中,往往嵌套的对应的View的测量就存在一些问题了。针对这种情况,网上可以搜到很多相关的代码。
public static void measureListViewHeight(final AbsListView listView) { final ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } listView.post(new Runnable() { @Override public void run() { int totalHeight = 0; int count = listAdapter.getCount(); //TODO 这里可以去获取每一列最高的一个 View listItem = listAdapter.getView(0, null, listView); listItem.measure(0, 0); if (listView instanceof GridView) { int columns = ((GridView) listView).getNumColumns(); int rows = count % columns != 0 ? 1 : 0; rows += count / columns; totalHeight += listItem.getMeasuredHeight() * rows; } else if (listView instanceof ListView) { for (int i = 0; i < count; i++) { listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight() + ((ListView) listView).getDividerHeight() * (listAdapter.getCount() - 1); } } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight; listView.setLayoutParams(params); } });}
我想说的是,在机型版本适配的时候,会提示在listItem.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED))
的时候会报出 空指针异常!这个也是醉醉的!
解决方案:
在measure
的方法之前首先进行一下LayoutParams
的设置!
listItem.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
上面这个方法是可以对ListView和GridView都可以进行相关的测量的。
但是GrideView一行显示的item高度不统一的情况没有还没有涉及到。
最后,这个方法要在其设置了Adapter
之后!
为什么要post
???????
因为如果不post
一下的话,GridView
根本获取不到对应的列数。
0 0
- 嵌套ListView&GridView测量其高度的方法
- 时常用于listview中嵌套Gridview 测量高度
- 重新测量ListView,GridView的高度
- 关于scrollview--listview(内部嵌套gridview等)的高度测量异常
- 深入理解布局容器绘制,解决ListView嵌套listview,或者ScrollView嵌套listview,gridview的高度问题解决方法
- 测量listview的高度
- ListView的高度测量
- ListView中嵌套GridView关于GridView的高度显示问题
- 嵌套ListView,GridView高度问题
- 解决ScrollView嵌套ListView和GridView冲突只显示一行Item的高度的方法
- 计算并设置ListView的高度,防止嵌套ScrollView监听出现问题,(两种方法,一种自定义,一种测量)
- ScrollView嵌套ListView或GridView等,使得其高度自适应解决方案
- Android 解决ListView嵌套GridView、GridView显示不正常的方法
- listview里面添加GridView,使其显示正常的GridView的高度
- Android ListView嵌套GridView方法
- ListView(ScrollView)嵌套ListView、GridView显示不全,内容大于一行计算的高度不正确的解决办法
- Gridview 自定义测量高度
- GridView测量高度
- 5.DML语句
- 欢迎使用CSDN-markdown编辑器
- Oracle Hotspot
- 【EF 2】浅谈ADO数据模型生成串(二):数据库连接串分析
- 6.单表查询
- 嵌套ListView&GridView测量其高度的方法
- SIGPIPE信号详解
- 学习笔记--内核中C语言和汇编的使用
- 7. 数据库函数
- 生活中的数学(为生活建模)(二)
- 深入分析Java ClassLoader原理
- 8. 分组和组函数
- Android Studio如何正确引入AS和ES项目
- Maven学习笔记