RelativeLayout 的替代方案是什么?

3
我喜欢使用RelativeLayout作为许多LinearLayout的替代方案的想法,但它在某些方面似乎存在缺陷。
  1. 对于子视图设置了visibility=gone的行为是令人不快的。似乎将消失的视图当作宽度和高度为0的视图处理是自然的行为,但实际上它会将这些视图移除为锚点,任何相对于消失视图布局的其他视图都会被放置在不可预测的位置。是的,可以使用“layout_alignWithParentIfMissing”来解决其中一些问题,但这并不是同样的事情,不是吗?
  2. 它不支持我在LinearLayout中发现的非常有用的layout_weight选项。
有没有好的RelativeLayout替代方案来解决这些或类似的问题?

我不知道为什么,但我喜欢线性布局,不太喜欢相对布局。而且我也想要使用layout_weight。 - Tima
同意。Romain Guy在他的Android性能演讲中提出使用RelativeLayout作为减少视图层次结构大小的一种方法,但是尽管我努力尝试,我仍然无法喜欢RelativeLayout。 - emmby
1个回答

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只能有一个直接子元素。


谢谢Phobos。虽然这是真的,但这有点违背了使用RelativeLayout减少布局对象数量的目的。 - emmby
抱歉,我没有意识到您试图减少整体布局对象的数量。 - Phobos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接