2012-05-19 29 views
0

我很好奇我需要做什麼,如果我想讓佈局佔據屏幕的右側,而不考慮屏幕大小。如何使佈局佔據1/2屏幕?

我是否需要在左側放置一個重量爲1的空元素?或者是否可以指定一個佈局與其父項的右側對齊並佔據一定比例?如果是的話......怎麼樣?理想情況下,父母是一個RelativeLayout,但我會與任何解決方案的工作原因,目前我試過的一切都導致完全錯誤的東西。

回答

3

據我所知,唯一的解決辦法是加權LinearLayout。視圖的重量除以佈局weightSum表示屏幕上的可用空間的百分比。

你可以把它與每個寬度設置爲0dp和重量設定爲1

加權佈局分爲兩個階段工作的兩個子視圖:第一階段措施,每個視圖的layout_width。第二階段分配關於layout_weight/weightSum關係的任何剩餘空間(總佈局寬度 - 每個視圖寬度的累計總和)。

+0

等待,你說我應該將layout_width設置爲0dp,它仍然佔用屏幕上的空間?但是,除此之外,如果父母的體重總和爲2,我會在左側放置一個空白布局,並在右側放置我想要的佈局,並給予它們每個1的權重,對吧? –

+0

@ Dr.Dredel:事實上,因爲體重對視圖的寬度有貢獻。實際上,如果您將寬度設置爲0dp以外的值,則不會獲得屏幕空間的一半,只有可用空間的一半(屏幕空間減去所述寬度)。 –

+0

好吧,我完全困惑。假設屏幕總共有100個,我將左側設置爲0dp並將其權重設置爲1,但是(邏輯上)不會(在邏輯上)可用空間*仍然是100dp,因爲左側實際上沒有使用任何空間......我認爲我錯過了一些真正重要的東西。 –

1

爲了使一個元素對齊任何一邊,你應該設置它的父元素的重力(可能是包含該元素的佈局)。當然,在你的情況下,將「重力」屬性的線性佈局設置爲右邊。您可能還需要佈局的「方向」更改爲水平

爲了使它只需要一半的屏幕,設置「加權求和」父佈局和和「佈局權重」的孩子。孩子的權重總和應等於父母的權重總和。