Android 获取View宽高三种方法的使用场景

Android 获取View宽高三种方法的使用场景

  1. 第一种measure();
     int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
       int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
         mView.measure(w, h);
         int Width = mView.getMeasuredWidth();
         int Height = mView.getMeasuredHeight();

measure这种方法适用直接测量一个View,如ImageView TextView等。

2.第二种view.post()

   view.post(new Runnable() {
      @Override
     public void run() {
     int height = view.getHeight();
    }
  });

3.第三种对View 的监听,布局完成后回调.

   view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
      @Override
       public void onGlobalLayout() {
         view.postDelayed(new Runnable() {
            @Override
               public void run() {
                 int height = view.getHeight();          
              }
             }, 300);
           }
        });
说明:由于第二种和第三种使用场景一样,所以就放在一起说了。

第二种和第三种适用于拿到addView之后容器的宽高,如用了一个LinearLayout代码add了View之后想拿到
LinearLayout容器的宽度就要使用第二种或第三种,用第一种方法拿到的是错误的宽高。

以上说明都是本人在实际项目中踩的坑,以此记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值