android 计算view 高度
2015-12-07 21:30
519 查看
android 计算view 高度
通过getHeight或者getMeasuredHeight函数获取通过这几行代码去计算。
int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); view.measure(widthSpec, heightSpec); height = view.getMeasuredHeight();
但是很多时候,上面这几个方面会有不起效果的时候,特别是试图在actvity 的 oncreate事件中获取view的高度,或者在fragment的oncreateview中获取view的高度。这些情况因为view还没有绘制完成,大小位置都还没确定,这时候获取到的高度一般都为0。这里我给出我的解决方案。就是通过view post一个线程。当view绘制完成,确定高度大小的时候就会调用这个线程,然后在这线程里面获取view的高度,一般就都可以获取到正确的高度了。
view.post(new Runnable() { @Override public void run() {view.getHeight() } });
还有一个就是计算listview的高度,这里的计算需要把listview的全部item高度相加得到
public static int getTotalHeightofListView(ListView listView) { ListAdapter mAdapter = listView.getAdapter(); if (mAdapter == null) { return 0; } int totalHeight = 0; for (int i = 0; i < mAdapter.getCount(); i++) { View mView = mAdapter.getView(i, null, listView); mView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); totalHeight += mView.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (mAdapter.getCount() - 1)); listView.setLayoutParams(params); listView.requestLayout(); return params.height; }
不过如果listview item里面包含过多的textview的时候计算出来的高度会有误差,如果想知道怎么解决,请看下回解答吧。
相关文章推荐
- Android--MVP设计思想
- Android中自定义TextView的形状
- android4.4切换横屏的生命周期w
- Android消息机制 Handler源码分析
- 我的Android进阶之旅------>Java字符串格式化方法String.format()格式化float型时小数点变成逗号问题
- Android - Menus
- android SoundPool播放音效(二)
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- android 实现静态图片文件的手势拉伸缩小
- android 泰国/缅甸语/捷克较低,Contacts联系出现精神错乱之类的问题清单
- Android ClearEditText:输入用户名、密码错误时整体删除及输入为空时候晃动提示
- Android View绘制流程源码浅析
- [置顶] Android Studio中.9.PNG图片的应用
- Android 接口的回调机制
- Android代码编码格式的转换
- android学习笔记-接口回调简析
- Android线程之间的通讯机制Handler
- Android学习之路-fragment之三
- Android平台音频信号FFT的实现
- Android 关联suppor-V4包源码