2010-09-02 43 views
19

我想分三個部分的頁面。我想以百分比值的方式來完成,但是Android不支持。相反,我必須使用android:layout_weight。但我很難理解它,並且正確。特別是如何計算實際大小。有沒有一種方法可以從android:layout_weight中獲得百分比值(0..100%)?Android:試圖理解android:layout_weight

我經歷了幾個案例(見附件截圖)來描述問題。彩色字段全部爲<LinearLayout>android:layout_height="fill_parent",因爲我希望將全屏分爲兩部分。

案例1

alt text

好吧,簡單。每<LinearLayout>獲得33%。

案例2

alt text

盛衰?第一個(黃色)<LinearLayout>完全消失?爲什麼?

案例3

alt text

再次迷茫。黃色<LinearLayout>又回來了。但是,與重量較重的兩個第一<LinearLayout>變得更小?到底是怎麼回事?

案例4

alt text

我完全不知道這一切背後的數學是什麼。

回答

25

有沒有辦法從android:layout_weight中獲取百分比值(0..100%)?

當然。使它們合計爲100.

對於「百分比值」,您希望LinearLayout中的單個項目的android:layout_height0px

+8

馬克,你做了我的一天。你無法相信我已經花了多少時間來試圖弄清奇怪的情況。並且一個簡單的'android:layout_height =「0px」'解決了所有問題:-) – znq 2010-09-02 17:13:58

+1

將layout_width設置爲「fill_parent」並將layout_weight設置爲像「0.2」,「0.75」這樣的浮點值也適用,在這種情況下,數字越小元素將佔用的部分空間。你能否告訴我們這是否可以接受? – Yar 2011-06-11 13:34:17

8

當您對酒吧使用android:layout_height =「fill_parent」時,您不會留下任何可用空間。 (因爲它們正在填充父項。)因爲所有3項都設置爲填充,所請求的高度實際上是父項高度的3倍,所以權重將應用於負剩餘空間。這解釋了您所看到的奇怪行爲,以及爲什麼將layout_height設置爲0px可以解決這個問題。

+0

鏈接已經死亡。你的博客文章是否在其他地方可用 – 2014-07-19 11:25:50