我有以下布局:
<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的相对布局边界的任何内容 . 我最好的选择是什么?
2 回答
我认为你的问题是
wrap_content
没有约束View
的上限(至少是父母的上限) . 因此,RelativeLayout
的高度可以继续到它的完整大小's parent. If it' s父级也不是wrap_content
,它会延伸到它的父级等等,直到它到达具有上限的父级 .在这种情况下,您的顶级父母将受手机大小的限制,因此它会停在那里 . 而不是在你的内心
LinearLayout
上使用重力 . 在最内层的LinearLayout
上使用属性layout_centerInParent="true"
. 除非布局变得比ImageView
大,否则它应该符合RelativeLayout
的中心 .EDIT: 您可能还想尝试
ImageView
的不同比例类型 . 有一些会将图像缩放到可以获得的大而不会裁剪或扭曲比率 . 有些会一直填满整个视图,但可能会裁剪或扭曲图像 .您的帖子中有很多内容尚不清楚,可能您应该发布完整版的XML代码 .
根据我的理解,我猜你没有使用RelativeLayout约束,如
layout_alignParentBottom="true"
或layout_centerVertical="true"
. 与重力属性不同,这些将起作用 .