Android获取View尺寸的三种方法
2016-07-06 09:46
615 查看
在Activity的onCreate()方法中,使用View.getWidth()、View.getHeiht()方法来获取View的尺寸看似没有问题,但其实并不能获取正确的结果,返回的尺寸为0.这是因为在执行onCreate()方法的时候,界面处于不可见状态,需要加载的组件还没有绘制出来,无法获取真实的尺寸。
要想在View绘制之前获取它的尺寸可以采用以下三种方法:
要想在View绘制之前获取它的尺寸可以采用以下三种方法:
方法1
1 2 3 4 5 6 | //测量 int width =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int height =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); view.measure(width,height); int height=view.getMeasuredHeight(); int width=view.getMeasuredWidth(); |
方法2
1 2 3 4 5 67 | //组件绘制前监听 ViewTreeObserver vto =view.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { int height =view.getMeasuredHeight(); int width =view.getMeasuredWidth(); } }); |
方法3
1 2 3 4 5 67 | //监听整个布局 ViewTreeObserver vto = view.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){ @Override public void onGlobalLayout() { view.getViewTreeObserver().removeGlobalOnLayoutListener(this); int height =view.getMeasuredHeight(); int width =view.getMeasuredWidth(); } }); |
相关文章推荐
- Android模版化编程系列(一)
- android spinner控件
- Android反编译分析工具
- (转)Android 从底层实现让应用杀不死【失效Closed】(1)
- Android内存管理之道
- Android 编程下 Touch 事件的分发和消费机制
- android中读取properties文件
- Android开发平台搭建
- Android 程序框架设计
- android:id="@+id/button1" 与 android:id="@id/button1" 区别 @string
- android签名那点事
- Android4.4.2KK竖屏强制更改为横屏的初步简略方案
- Android4.4.2KK竖屏强制更改为横屏的初步简略方案
- Android studio启动后卡在refreshing gradle project的一个解决办法 有意思哈哈
- 使用Fresco加载图片
- 理解Android进程创建流程
- Android实现开机自动启动Service或app的方法
- 【Android 开发】:Content Provider (内容提供者) 详解
- android 布局控件中 Layout_weight属性
- android 四大组件之Activity(1)