start:
view在绘制完成后我们可以轻松的获取到view的宽高,但是在view绘制之前如何获得view的宽高呢?例如在oncreate()方法中如何获得view的宽高?
其实有三种常用的方法来获取:
1、
int width = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int height = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
view.measure(width,height);
int height = view.getMeasuredHeight();
int width = view.getMeasuredWidth();2. //增加组件绘制之前的监听
ViewTreeObserver vto =view.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int height =view.getMeasuredHeight();
int width =view.getMeasuredWidth();
}
});3. //增加整体布局监听
ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){
@Override
public void onGlobalLayout() {
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int height =view.getMeasuredHeight();
int width =view.getMeasuredWidth();
}
});
本文介绍了在Android开发中,在视图绘制前获取View宽高的三种实用方法:使用MeasureSpec进行测量、添加绘制前监听器以及添加全局布局监听器。
1477

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



