2011-03-04 125 views
3

我喜歡使用RelativeLayout作爲許多LinearLayout的替代方案,但它似乎在幾個方面都不盡人意。RelativeLayout的替代品?

  1. 其行爲對於有visibility=gone的子視圖是非常殘酷的。看起來沒有意見的自然行爲是將它們看作寬度和高度爲0的對象,但相反,它將它們作爲錨點和其他視圖放在不可預知的位置,從而將它們移除。是的,可以使用「layout_alignWithParentIfMissing」來解決其中的一些問題,但這不是一回事,是嗎?
  2. 它不支持layout_weight選項,我覺得在LinearLayout中非常有用。

在解決這些或類似問題時,是否有任何可以替代RelativeLayout的好方法?

+0

我不知道爲什麼,但我喜歡線性佈局,並不真正喜歡相對佈局。並且我缺少layout_weight以及 – Tima 2011-03-04 23:12:23

+0

同意。 Romain Guy提議使用RelativeLayouts作爲在他的一個Android性能談話中減少視圖層次的大小的方法,但試試我可能無法在我的心中找到愛上RelativeLayout的內容。 – emmby 2011-03-04 23:15:31

回答

0

您可以使用相對佈局的嵌套佈局。

<RelativeLayout> 
    <LinearLayout 
    android:orientation="horizontal" 
    android:layout_alignParentBottom="true"> 
    <widget> 
    <Widget> 
    </LinearLayout> 
    <TableLayout 
    android:layout_alignParentTop="true"> 
    <TableRow> 
    <Widget> 
    <Widget> 
    </TableRow> 
     <Widget> // By itself in the middle of a table layout 
    </TableLayout> 
</RelativeLayout> 

只是一個非常簡單的例子。任何容器類型都可以嵌套在RelativeLayout中,但ScrollView只能有一個直接子元素。

+0

謝謝Phobos。這是真的,儘管它有些失敗了使用RelativeLayout來減少佈局對象的數量的目的。 – emmby 2011-03-04 23:14:37

+0

對不起,我沒有意識到你試圖減少整體佈局對象的數量。 – Phobos 2011-03-05 01:51:26