Android 中获取某个控件的宽高
来源:互联网 发布:怎样用手机淘宝开网店 编辑:程序博客网 时间:2024/05/07 14:02
前言
有好多朋友直接在onCreate里面调用getWidth、getMeasuredWidth来获取控件的高和宽,结果呢?始终都是0!为什么呢?因为我们的控件是画出来的,当我们在执行onCreate()的方法的时候,我们的控件还没有画出来,只有执行完onCreate()方法,我们定义的控件才会被度量(measure),所以是0.
办法
既然不能直接在onCreate里面调用getWidth、getMeasuredWidth方法,那怎么获取我们控件的高和宽呢?
这里有3个办法,这里我就简单来说一下
第一种:
int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); imageView.measure(w, h); int height = imageView.getMeasuredHeight(); int width = imageView.getMeasuredWidth();
这种方法会调用3次onMeasure()方法
第二种:
ViewTreeObserver vto = imageView.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() { vto.removeOnPreDrawListener(this); int height = imageView.getMeasuredHeight(); int width = imageView.getMeasuredWidth(); return true; } });
这种方法会调两次onMeasure()方法
第三种:
ViewTreeObserver vto = imageView.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this); imageView.getHeight(); imageView.getWidth(); } });
同方法二
选择
具体用哪个看实际项目吧,推荐使用方法三
1 0
- Android 中获取某个控件的宽高
- Android中获取控件的宽高
- Android中获取控件的宽和高
- android 在onCreate中获取控件的宽高
- Android中自定义控件获取text的宽高方式
- Android oncreate中获取控件宽高
- Android中如何获取控件宽高?
- 在onCreate()中获取某个View的宽高
- Android开发 获取控件的宽高
- Android获取UI控件的宽高
- 获取android控件的宽高
- 获取页面中某个控件的个数
- android获取控件宽高
- android获取控件宽高
- Android开发中在onCreate中获取控件的宽高方法
- Android代码中如何获取控件宽高
- Android View中通过getViewTreeObserver().addOnGlobalLayoutListener()获取控件高、宽
- Android在onCreate或者在Fragment的onCreateView中获取控件、屏幕的宽高
- 安卓中通过xml序列化器生成xml文档
- Java设计模式-模板方法模式详解
- Django学习笔记(3) -- Admin
- 1.1.6 计算机网络的性能指标
- sed命令
- Android 中获取某个控件的宽高
- 文章标题
- Java中动态运行JS脚本
- sss
- UITableView(一)----基本介绍
- namespace学习笔记
- 二分_D
- matlab简单神经网络示例
- Rundll32.exe文件详解(显示我的电脑 取消自动登录)