【问题标题】:Background image for wrap_contentwrap_content 的背景图片
【发布时间】:2011-04-08 14:29:42
【问题描述】:

我创建了一个自定义背景图像,并希望将其用作高度为 wrap_content 的布局的背景。但是,该布局中内容的总高度远小于背景图像的高度。

当我通过 android:background="@drawable/image" 将它设置为 XML 中的背景时,我注意到它显示了图像的整个高度,尽管实际内容的高度更短。

有没有办法阻止这种情况发生?

谢谢。

【问题讨论】:

    标签: android image graphics layout background


    【解决方案1】:

    我遇到了类似的问题,正在使用 9patch。完整的 9 个补丁图像显示为背景,即使它附加的内容不是那么大(使用 wrap_content)。我不确定为什么 Android 选择显示完整图像而不是缩放背景以适应内容。

    不过,我通过缩小背景图片解决了这个问题。我的意思是保留角落但缩小垂直和水平部分。请参阅我之前拥有的背景框架的附加图像以及调整大小的结果。

    【讨论】:

    • 非常感谢。我花了几个小时来找出为什么我的 9patch 图像生成的视图比使用 wrap_content 作为高度参数时的视图要高得多。有趣的是,这种效果似乎取决于设备。在 Nexus7 上,即使使用原始的大背景图像,视图高度也是正确的,而在 Xperia ray 上,视图高度几乎是应有的两倍。在 Xperia mini 和带有 Cyanogen Mod 的廉价 Android 平板电脑上,“效果”也存在,但不如 Xperia ray 强。
    【解决方案2】:

    我也遇到过这个问题。如果您设置背景的资源太小,您可能会遇到纵横比问题。我找到的解决方案是将背景图像分为三个部分:顶部、中间和底部。这些图像中的每一个都是三个不同布局/图像视图的背景。中间部分是持有“wrap_content”属性的部分:

    顶部:

    中间:

    底部:

    随着内容大小的增加,边框不受影响,中间也会增加(整个“盒子”也会增加)。当然,对于背景图像的分区有意义的情况,这是一种解决方案。

    【讨论】:

      【解决方案3】:

      您可以将背景图像转换为 9-patch 可绘制图像,或使用 XML 位图在图像大于容器时更改图像的行为。有关两者的更多信息,请参阅this page

      【讨论】:

      • 如果使用 XML 位图,您能详细说明一下吗?我尝试使用 XML 位图并使用属性 android:gravity="top|fill_horizo​​ntal|clip_vertical" 来查看是否可以解决问题,但仍然没有。
      • 好吧,我没有为您的案例尝试过 XML 位图,但这些选项看起来很有希望。 9-patch 方式肯定会起作用——我已经用过了。
      • 嗯。我已经尝试了所有可能有帮助的选项,但我认为我可能做错了什么。我在网上到处搜索,似乎没有人遇到这个问题......
      • @Konstantin 正如 Steven Pena 在他的回答中所说,9-patch 不能用于缩小,只能用于放大。
      • @Psycho 他也提供了解决方案。
      猜你喜欢
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多