android 获取组件尺寸大小

原创 2015年11月19日 11:47:01

在oncreate()中利用view.getWidth()或是view.getHeiht()来获取view的宽和高,看似没有问题,其实他们去得值是0,并不是你想要的结果?

这是为什么呢?

在调用oncreate()方法时,界面处于不可见状态,内存加载组件还没有绘制出来,你是无法获取他的尺寸。

那如何在绘制组件之前能获取到该组件的尺寸大小呢?

这里有三种方法,经过验证的:

方法一 
//测量方法
?
1
2
3
4
5
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();

方法二 
?
1
2
3
4
5
6
7
8
9
//增加组件绘制之前的监听
ViewTreeObserver vto =view.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
   @Override
    public booleanonPreDraw() {
       int height =view.getMeasuredHeight();
       int width =view.getMeasuredWidth();    
   }
});
方法三 : 
?
1
2
3
4
5
6
7
8
9
10
//增加整体布局监听
ViewTreeObserver vto = view.getViewTreeObserver(); 
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){
    @Override 
    public voidonGlobalLayout() {
      view.getViewTreeObserver().removeGlobalOnLayoutListener(this);     
    int height =view.getMeasuredHeight();
     int width =view.getMeasuredWidth(); 
    
});
那么,在activity进入运行期时,组件的尺寸获取方法就很简单了,直接getWidth()和getHeight().
版权声明:本文为博主原创文章,未经博主允许不得转载。

android 获取组件尺寸大小

android 获取组件尺寸大小
  • u010152805
  • u010152805
  • 2013年12月26日 21:44
  • 2091

Android常见尺寸的获取

代码: //获取控件尺寸(控件尺寸只有在事件里面可以获取到) TextView mTV = (TextView) findViewById...
  • pengkv
  • pengkv
  • 2015年09月28日 16:53
  • 1800

Android初学习 - 获取控件尺寸的方法

如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth、getMeasuredWidth不就可以获得了吗,但是,事实上是并没有简单的,不...
  • cnmilan
  • cnmilan
  • 2015年08月10日 11:27
  • 1296

Android 在Activity中获取控件尺寸的方法

Android 在Activity中获取控件尺寸的方法
  • csm_qz
  • csm_qz
  • 2015年12月26日 18:03
  • 2073

Android中获取当前屏幕的尺寸大小

首先的让Android支持多种分辨率: ```
  • u012975705
  • u012975705
  • 2015年10月11日 17:10
  • 1738

Android Camera 找出屏幕的最佳尺寸大小

大家平时都会调用到Camera 这个API,在设置Camera.Paramera的参数的时候,有一个预览大小。也就是: setPreviewSize(int width, ing height) ...
  • u012301841
  • u012301841
  • 2016年01月10日 15:19
  • 1933

android获取屏幕的物理尺寸

/** * @ 获取当前手机屏幕尺寸 */ public static float getPingMuSize(Context mContext) { int densityDpi =...
  • liu3364575
  • liu3364575
  • 2017年08月23日 17:52
  • 40660

android 获取组件尺寸大小(转载)

在oncreate()中利用view.getWidth()或是view.getHeiht()来获取view的宽和高,看似没有问题,其实他们去得值是0,并不是你想要的结果? 这是为什么呢? ...
  • xueyangshipin
  • xueyangshipin
  • 2016年01月07日 17:07
  • 123

不同屏幕尺寸时获取drawable图片资源的真实尺寸

不同屏幕尺寸时获取drawable图片资源的真实尺寸
  • zhangbuzhangbu
  • zhangbuzhangbu
  • 2016年09月07日 08:49
  • 1544

Android 为什么计算不出准确的屏幕尺寸的原因,及 Android 获得屏幕物理尺寸、密度及分辨率

DPI:dots-per-inch,每英寸的像素数量,也就是说,密度越大,每英寸内容纳的点数就越多。这个值是设备自己决定并写死的。 计算方法:获取到屏幕的分辨率:point.x和point.y,再取...
  • a78270528
  • a78270528
  • 2015年08月06日 16:48
  • 1526
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 获取组件尺寸大小
举报原因:
原因补充:

(最多只允许输入30个字)