2016-07-05 28 views
1

我正在學習一個自定義組件,並且我在viewviewgroup中找到了方法onMeasure()的一些區別。例如,有人呼叫super.onMeasure,最後有人使用setMeasuredDimension。差異在哪裏? measureChildren()意味着什麼?onMeasure()方法的view和viewgroup有什麼區別?

這是我第一次來這個社區,希望得到我想要的答案,謝謝。

回答

0

super.onMeasure()

,當你想你的自定義組件的測量留給你是從擴展超類時使用。例如,假設您正在爲多種顏色的文本構建自定義TextView。您真的不想覆蓋TextView的onMeasure()實現,因爲您沒有處理文本的寬度和高度。因此,您可以撥打super.onMeasure()並將測量結果保留爲TextView

setMeasuredDimension()

在情況下,你必須覆蓋onMeasure(),您使用setMeasuredDimension()告訴android的視圖渲染系統自定義視圖的最終計算寬度和高度。這將被視圖系統用於渲染視圖。

measureChildren() 它講述了這樣ViewGroup的兒童使用給定MeasureSpec來衡量自己。

非常好的討論here

相關問題