Android开发显示之前获取view的宽高方法
来源:互联网 发布:wifi连接上没有网络 编辑:程序博客网 时间:2024/06/10 05:35
记住onCreate、onStart、onResume中均无法正确得到某个View的宽高,因为View的measure过程和Activity的生命周期方法是不同步执行的,如果View还没有测量完毕,那么获得的宽高就是0
1、Activity中的onWindowFocusChanged(),注意被多次调用,可以加标志,获取到想要的就不获取了
@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if(hasFocus){ int width = rl_head.getMeasuredWidth(); } }2、view.post(runnable),一般在onCreate中调用,需不需要加延时呢,经过多次验证是不需要加延时的;准确嘛?,98%是准确的
推荐看分析博客http://blog.csdn.net/scnuxisan225/article/details/49815269
ivHead.post(new Runnable() { @Override public void run() { int width = ivHead.getMeasuredWidth(); } });3、ViewTreeObserver(),注意被多次调用
ViewTreeObserver vto = holder.ll_looked.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { holder.ll_looked.getViewTreeObserver().removeGlobalOnLayoutListener(this); LogUtils.i("ll_look_height",holder.ll_looked.getHeight()+""); } });4、view.measure,不推荐使用
总结考虑使用顺序2314,总的归结思考的方向view的宽高是在measure,layout后才确定的
所有试过才知道的,获取宽高不同环境下可能不一样或者不行
阅读全文
0 0
- Android开发显示之前获取view的宽高方法
- Android 获取view的宽高方法
- Android--获取View的宽高的几种方法
- Android在onCreate方法中获取view的宽高
- android获取view宽高的几种方法 - ysl_longer
- android中获取View宽高的方法
- Android中获取View宽高方法
- android获取view宽高的几种方法,解决获取高宽为0问题
- android 开发中获取View视图的宽和高的几种方法
- android 开发中获取View视图的宽和高的几种方法
- Android 开发中获取View视图的宽和高的几种方法
- Android获取View的高宽
- Android 如何获取view的宽高
- Android 获取View的宽高
- Android获取View的宽高
- Android获取View的宽高
- Android:获取View的宽高
- android 获取view的宽高
- java的工厂模式
- 准备PAT之All Roads Lead to Rome Dijikstra算法变型
- 高效实现List反序功能的实现
- Iterator、AbstractCollection、AbstractList
- C#路径中获取文件全路径、目录、扩展名、文件名称
- Android开发显示之前获取view的宽高方法
- 直接继承View来自定义控件时,需要重写onMeasure()方法并设置wrap_content时的大小 原理分析
- [日推荐]『拉了吗』出门必备
- 如何设置connect超时时间
- restful API接口规范
- keil5错误
- 606. Construct String from Binary Tree
- UE4获得机器码
- MySql错误