【问题标题】:LinearLayout inside RelativeLayout uses super-parent as parentRelativeLayout 内部的 LinearLayout 使用超父作为父级
【发布时间】:2011-11-29 02:58:40
【问题描述】:

我有以下布局:

<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。

最终我想要的是相对布局高度将图像视图包裹起来,几乎就像它是它的背景一样(尽管它意味着在背景顶部的另一个视图顶部的覆盖),以及线性布局只需在相对布局的约束内工作即可。

此外,我希望能够剪辑任何超出包装图像视图的相对布局范围的内容。我最好的选择是什么?

【问题讨论】:

    标签: java android android-linearlayout android-relativelayout


    【解决方案1】:

    我认为您的问题是wrap_content 没有限制View 的上限(至少由父级限制)。因此,RelativeLayout 的高度可以达到其父级的全尺寸。如果它的父代也不是wrap_content,它将延伸到它的父代,依此类推,直到它到达一个具有上限的父代。

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

    编辑: 您可能还想尝试ImageView 的不同比例类型。有些可以在不裁剪或扭曲比例的情况下将图像缩放到尽可能大。有些总是会填满整个视图,但可能会裁剪或扭曲图像。

    【讨论】:

      【解决方案2】:

      您的帖子有很多不清楚的地方,可能您应该发布您的 XML 代码的完整版本。

      据我了解,我猜您没有使用RelativeLayout 约束,例如layout_alignParentBottom="true"layout_centerVertical="true"。与重力属性不同,这些会起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多