当在一个Activity或Fragment中有时我们需要获取一个控件或View的宽高来做处理,如果我们直接layout.getHeight()时 得到的值是为0,这是为什么呢?因为我们的View是呈树状型绘画的,也就是说此时可能视图并没有绘画完成,所以自然得不到View的宽高,这时我们就需要ViewTreeObserver类来监听是否绘画成功,具体看如下代码:
ViewTreeObserver vto = layout.getViewTreeObserver();vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override public void onGlobalLayout() {
// 返回的是View信息
int height = ll_content.getHeight();
}
});
在Android开发中,若需要在Activity或Fragment中获取控件的宽高,直接调用layout.getHeight()可能得到0,这是因为View还未完成绘制。通过ViewTreeObserver可以监听View的绘制状态,确保在正确的时间获取尺寸信息。
182

被折叠的 条评论
为什么被折叠?



