為何Android的預設布局是RelativeLayout?而不是LinearLayout

時間 2021-06-04 10:51:30

1樓:郭小龍

在層級結構相同的時候用LinearLayout反而效率更高,因為LinearLayout只要一次Measure,而RelativeLayout 因為子View有乙個橫向或者縱向的相對位置,需要兩次Measure,整體而言LinearLayout效率更高,但是RelativeLayout能在同一層級實現比較複雜的布局,所以大部分情況推薦使用RelativeLayout。

2樓:

查了一些資料,總結下 :

1、如果能用RelativeLayout減小View樹的高度那就用RelativeLayout,如果不能減小的情況下用LineraLayout或者FrameLayout效率高。

2、用RelativeLayout時候盡量使用padding代替margin效率高。

3樓:豆漿

這個涉及一些效能問題,因為對於LinearLayout,他在onMeasure方法中對子View是遍歷測量的,所以在層級關係比較複雜,尤其是LinearLayout巢狀的頁面,底層子View就會被測量好多次!遍歷測繪是很耗費效能的一件事。

如果你沒看過原始碼,那麼我想你在應用LinearLayout和RelativeLayout的時候總會遇到這樣一種情況,RelativeLayout在布局中上面的子View無法引用下面的子View,而LinearLayout可以,其實,就是這個道理。

4樓:光源

請看看現在的Android studio 的預設布局,已經是 LinearLayout了。所以。。題主是過度解讀了吧。[手動doge]

5樓:

你可以去看 Google I/O 中 Android 的 Session

或者 Android 的文件。

不過基本可以總結成以下3點:

1. RelativeLayout 布局靈活一些。

2. 實現複雜的布局時,由於 RelativeLayout 所需要的巢狀層次少,所以可能大概也許效能會好一些。 但是你應該根據實際情況測試,主觀判斷不準確,請參考下面第三點。

3. 對於簡單的布局,或者使用 LinearLayout 的巢狀布局層次不多的情況下。還是推薦使用 LinearLayout 來實現。

因為 LinearLayout 布局效能更高一點,為什麼? 因為 RelativeLayout 布局需要至少計算兩次。

大和戰艦的防空布局為何如此的集中?

迷之怨念 早期設計時留下的敗筆,為了遷就兩側的三聯裝155mm副炮的位置,把雙聯裝127mm防空炮裝到了上層建築上。後來拆了兩側的155副炮換127防空炮,為了方便指揮不得不把這些127布置的和原有127更近,而把25放在外側一整圈。高讚的回答中已經提到了美國戰列艦的防空布局。對二戰時期戰列艦最合理...

為何微軟不把 Windows 的預設字符集設定成 Unicode ?

netkiller 早期的作業系統都採用 L18N,包括 Linux 系統也是 L18N,Linux 經歷了痛苦的遷移,遷移到 i18n。微軟一直沒有狠下決心做i18n 遷移。主要是相容性的問題。 因為有大量的歷史遺留程式仍然在使用非Unicode編碼 比如小黃油啊 而且這裡的歷史遺留指的不是程式作...

為何 Android 一般的公升級不像 Windows 一樣只需打補丁?

jane lia 我想,樓主的意思其實是,同乙個手機,底層以及驅動都不動,為什麼上層的framework等不能從4.0公升級到4.1,4.2呢? way11 一般而言,越是通用的冗餘肯定越大,造成的計算資源浪費越多,同時相容性越好,如PC機 越是專業的冗餘則越小,相應的計算資源利用越高,但相容性越差...