美文网首页
Android 关于getWidth() 和 getMeasur

Android 关于getWidth() 和 getMeasur

作者: 没有了遇见 | 来源:发表于2019-04-20 14:39 被阅读0次

    在调试代码的时候,在代码中用LayoutParams 动改变了代码的位置  页面创建完毕后 正常展示完毕后,确认控件位置已经修改.但是在页面一创建就获取View的宽高  用getWidth()和getMeasuredWidth() 得到的结果是0.....梳理下思路有可能是因为view创建和绘制结束前获取了宽高,这个时候这个时图还没有绘制完成所以宽高是0.

这个时候就用到了ViewTreeObserver  这个方法  字面意思是视图树的观察者 这个对象可以监听时图的绘制,布局,显示  :

在调试代码的时候,在代码中用LayoutParams 动改变了代码的位置 页面创建完毕后 正常展示完毕后,确认控件位置已经修改.但是在页面一创建就获取View的宽高 用getWidth()和getMeasuredWidth() 得到的结果是0.....梳理下思路有可能是因为view创建和绘制结束前获取了宽高,这个时候这个时图还没有绘制完成所以宽高是0.

这个时候就用到了ViewTreeObserver  这个方法  字面意思是视图树的观察者 这个对象可以监听时图的绘制,布局,显示  :

ViewTreeObserver viewTreeObserver =view.getViewTreeObserver();

viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

@Override

    public void onGlobalLayout() {

    view.getViewTreeObserver().removeOnGlobalLayoutListener(this);

}});

注意:  onGlobalLayout()这个回调方法会多次执行  测量宽高结束后需要移除这个监听

             view.getViewTreeObserver().removeOnGlobalLayoutListener(this);    

相关文章

网友评论

      本文标题:Android 关于getWidth() 和 getMeasur

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