我有以下布局:
<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的相对布局边界的任何内容。什么是我最好的选择?
答案 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约束。与重力属性不同,这些将起作用。