首页 文章

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

提问于
浏览
2

我有以下布局:

<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 回答

  • 1

    我认为你的问题是 wrap_content 没有约束 View 的上限(至少是父母的上限) . 因此, RelativeLayout 的高度可以继续到它的完整大小's parent. If it' s父级也不是 wrap_content ,它会延伸到它的父级等等,直到它到达具有上限的父级 .

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

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

  • 2

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

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

相关问题