1. 程式人生 > >Android 獲取layout寬高之前呼叫View.measure(0,0)的原因

Android 獲取layout寬高之前呼叫View.measure(0,0)的原因

private ConstraintLayout constraintLayout;
constraintLayout=findViewById(R.id.screen_test);
constraintLayout.measure(0,0);
Log.i(TAG,"onCreate:"+constraintLayout.getMeasuredHeight()+","+constraintLayout.getMeasuredWidth());

0所對應的 MeasureSpec

現在知道了傳遞的0並不是簡單的一個0,它符合著 MeasureSpec 規範。
將0解包後,所對應的 SpecMode = 0,SpecSize = 0.
SpecMode 0 對應的模式為 UNSPECIFIED.
UNSPECIFIED的

官方解釋

The parent has not imposed any constraint on the child. It can be whatever size it wants.
父容器不會對子元素加以任何約束,子元素可以是任何大小。