美文网首页
获取View宽高的正确姿势

获取View宽高的正确姿势

作者: topone37 | 来源:发表于2018-08-01 11:28 被阅读5次

获取View的宽高正确姿势

在我们的正常开发中,我们避免不了 调用View.getWidth, View.getHeight,很多时候,我们得到的却是0 (因为很大可能:我们获取的时候,控件并没有绘制和布局完成 )

1正确知识 (很常用的姿势哦)

//通过addOnGlobalLayoutListener 获取监听事件,当控件绘制和布局完成时获取宽高
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        if (Build.VERSION.SDK_INT >= 16) {
            view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }else {
            view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        }
        int width = view.getWidth();
    }
});

2. 正确姿势

//当 view layout 处理完成时,回调UI线程时获取宽高
view.post(new Runnable() {
    @Override
    public void run() {
        int width = view.getWidth();
    }
});

3. getMeasuredWidth()与getWidth()的区别

  • getMeasuredWidth(): 一个是绘制的测量出来的宽高(控件本身的宽高)
  • getWidth(): 这是控件展示时真正的宽度(毕竟宽高不仅取决于控件本身的宽高,还有父容器的限制)

相关文章

  • 获取View宽高的正确姿势

    获取View的宽高正确姿势 在我们的正常开发中,我们避免不了 调用View.getWidth, View.getH...

  • Activity正确获取View宽高

    在View的measure完成后,一般可以通过getMeasureWidth/getMeasureWidth方法可...

  • 如何正确获取View的宽高

    在onCreate中是获取不到View的宽高以及坐标的。使用View.post(Runnable)可以获取:

  • View相关知识

    获取View的宽高 (1)Activity/View onWindowFocusChanged (2)view.p...

  • 自定义View(待整理)

    1.坐标系 View获取自身宽高 getHeight():获取View自身高度 getWidth():获取View...

  • 自定义View获取宽高

    自定义View的时候经常少不了获取View的宽高信息,当然不一定是自定义View的时候才会需要获取宽高信息,其他情...

  • Android App 知识点整理

    1: 获取控件宽高 控件View有getHeight()和getwidth()方法可以获取宽高,但是如果直接在on...

  • 获取View宽高

    在onCreate()中获取View宽高 两种方法: 1.使用View.post(Runable runable)...

  • 获取View宽高

    我们应用在获取控件宽高的时候,都是调用控件View.getWidth()、View.getHeight()获取,但...

  • 测量方法&属性

    获取view的宽高属性 使用时机 些许bug View.getLayoutParams() View.getLef...

网友评论

      本文标题:获取View宽高的正确姿势

      本文链接:https://www.haomeiwen.com/subject/aevlvftx.html