在我們?nèi)チ私釧ndroid視圖繪制的原理的時候扑馁,往往會看到這兩個獲取視圖寬高的方法盲链,那兩者到底有什么不同秩冈?其不同可以從下面兩點來理解:
1.定義概念不同:前者指是View視圖實際的寬高(包括被隱藏的部分)搔课;后者指的是視圖顯示的寬高窍育。
2.賦值時機不同:前者在View視圖執(zhí)行onMeasure后被賦值埃儿;后者是在視圖執(zhí)行了onLayout后被賦值器仗。若在Activity的onCreate中取值,會發(fā)現(xiàn)其值一直為0童番。
注:在一些極端的情況下精钮,系統(tǒng)可能需要多次測量才能確定視圖最終的寬高,在這種情況下剃斧,在onMeasure方法中得到的視圖從測量寬度/高度可能是不準確的轨香。
一個比較好的習(xí)慣是在視圖的onLayout方法中獲取視圖的measureWidth/height或width/height。