版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rui574081323/article/details/53735937
有时候需要在Activity或者Fragment的onCreate或者onCreateView方法中对控件布局进行调整
我们通常调用的方法有 view.getLeft(), view.getTop() 等
但是你会发现这些方法的返回值都是0,这是因为控件还没有真正被渲染到界面上,自然获取不到位置信息
解决方案如下:
videoBtn.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// 这这里对位置信息进行调整 **//
// 如果只需要调整一次,需要把这个Listener移掉
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
// 这个方法被deprecated了,不过为了兼容低版本,也只能硬着头皮用了
videoBtn.getViewTreeObserver().removeGlobalOnLayoutListener(this);
} else {
videoBtn.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
}
});