个人记录 getViewTreeObserver 获取控件宽高

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/NianandShao/article/details/82077620

在OnCreate中无法通过View.getWdith或View.getHeight获取控件的宽高,可以使用getViewTreeObserver.addOnGloblaLayoutListener来获取宽高

addOnGloblaLayoutListener可能会被执行多次,需要获取宽高之后进行销毁

removeOnGlobalLayoutListener 销毁

btn.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                Log.d(TAG, "Width : " + btn.getWidth() + " Height : " + btn.getHeight());
                btn.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        });

在布局设置一个button width = 100dp height = 10dp 1dp = 3px

执行结果

Width : 300 Height : 30

猜你喜欢

转载自blog.csdn.net/NianandShao/article/details/82077620