RelativeLayout中的LinearLayout使用super-parent作为父级

时间:2011-11-28 18:24:26

标签: java android android-linearlayout relativelayout

我有以下布局:

<LinearLayout width:fill height:fill >
  <RelativeLayout width:fill height:wrap >
    <ImageView width:fill height:wrap >
    <LinearLayout width:wrap height:wrap />
  </RelativeLayout>
</LinearLayout>

当涉及垂直属性时,最里面的LinearLayout似乎不知道它在RelativeLayout中。重力只能水平工作。对于所有意图和目的(垂直),内部LinearLayout认为外部LinearLayout是其父级。对齐父级Top / Bottom将它和RelativeLayout对齐以填充外部LinearLayout。

最终我想要的是相对布局高度来包装imageview几乎就像它的背景一样(虽然它意味着在背景顶部的另一个视图上叠加),并且线性布局简单地在相对布局的约束内工作。

此外,我希望能够剪切超出包装imageview的相对布局边界的任何内容。什么是我最好的选择?

2 个答案:

答案 0 :(得分:2)

我认为你的问题是wrap_content没有约束View的上限(至少是父母的上限)。因此,RelativeLayout的高度可以达到其父级的全部大小。如果它的父亲也不是wrap_content,它会延伸到它的父母等等,直到它到达有上限的父母。

在这种情况下,您的顶级父母受手机大小的限制,因此会停在那里。而不是在内心LinearLayout上使用重力。使用最内层layout_centerInParent="true"上的属性LinearLayout。除非布局变得比ImageView更大,否则它应符合RelativeLayout的中心。

修改 您可能还想尝试ImageView的不同比例类型。有一些会将图像缩放到可以获得的大而不会裁剪或扭曲比率。有些会一直填满整个视图,但可能会裁剪或扭曲图像。

答案 1 :(得分:1)

您的帖子中有很多内容尚不清楚,可能您应该发布完整版的XML代码。

根据我的理解,我猜您没有使用layout_alignParentBottom="true"layout_centerVertical="true"之类的RelativeLayout约束。与重力属性不同,这些将起作用。