Skip to content

Instantly share code, notes, and snippets.

@5ZSQ
Created August 8, 2017 10:03
Show Gist options
  • Save 5ZSQ/a9602b0b37c4e96e38d8d796a3a15ae6 to your computer and use it in GitHub Desktop.
Save 5ZSQ/a9602b0b37c4e96e38d8d796a3a15ae6 to your computer and use it in GitHub Desktop.
Android- 获取View宽高度的三种方式
public static void getViewSize1(View view) {
int width = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
int height = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
view.measure(width, height);
int height1 = view.getMeasuredHeight();
int width1 = view.getMeasuredWidth();
}
public static void getViewSize2(final View view) {
//增加组件绘制之前的监听
ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int height = view.getMeasuredHeight();
int width = view.getMeasuredWidth();
}
});
}
public static void getViewSize3(final View view) {
//增加整体布局监听
ViewTreeObserver vto = view.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int height = view.getMeasuredHeight();
int width = view.getMeasuredWidth();
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment