2011-03-04 79 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