【Android-UI】Android 在OnCreate()中获取控件高度与宽度

it2026-02-15  6

Activity#onCreate() 中直接获取控件高度与宽度,因为布局的渲染是异步操作,在onCreate()生命周期中未必能渲染完成,因此导致使用 View.getWidth() View.getHeight() 方法返回是0。如果硬要在 onCreate() 方法中获取控件高度与宽度,怎么办呢?

有如下三种方法:

方法一:

View view = findViewById(R.id.view); view.measure( View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED) ); int mWidth = view.getMeasuredWidth(); int mHeight = view.getMeasuredHeight();

方法二:

View view = findViewById(R.id.view); ViewTreeObserver viewTreeObserver = view.getViewTreeObserver(); viewTreeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { int mWidth = view.getMeasuredWidth(); int mHeight = view.getMeasuredHeight(); return true; } });

方法三:

View view = findViewById(R.id.view); ViewTreeObserver viewTreeObserver = view.getViewTreeObserver(); viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { view.getViewTreeObserver().removeOnGlobalLayoutListener(this); mWidth = view.getWidth(); mHeight = view.getHeight(); } });

参考:Android 在OnCreate()中获取控件高度与宽度    #  https://blog.csdn.net/pp_hdsny/article/details/12012553

 

 

 

最新回复(0)