【问题标题】:How do items of a LayerList drawable scale to fit the container View?LayerList 可绘制的项目如何缩放以适应容器视图?
【发布时间】:2016-07-01 10:38:03
【问题描述】:

来自developer guide about Layer-list drawables,

  1. 所有可绘制项目都被缩放以适应包含视图的大小, 默认。因此,将您的图像放在不同的图层列表中 位置可能会增加视图的大小,并且某些图像会缩放为 合适。

    在第一句话中,他们说项目被缩放以适应 容器视图(并不是说视图是根据 其中包含的项目的大小)。然后他们说大小 容器视图可能会增加(这意味着视图是 被缩放,对吧?)。 那么第二句不矛盾吗 第一个?有人能解释一下这是什么意思吗?


  2. android:drawable

    可绘制资源。 必填。对可绘制资源的引用。

    ...

    为避免缩放列表中的项目,请使用 element里面的element来指定drawable...

    ...

    例如,以下定义了一个缩放到 适合其容器视图:

    <item android:drawable="@drawable/image" /> 
    

    为避免缩放,以下示例使用了重心为中心的元素:

    <item>
      <bitmap android:src="@drawable/image"
              android:gravity="center" />
    </item>
    

    再次,他们说android:drawable 是一个必需 属性,然后他们给出了一个不使用该属性的示例。什么是正确的?


  3. 为避免缩放列表中的项目,请在列表中使用 &lt;bitmap&gt; 元素 &lt;item&gt; 元素指定可绘制对象并定义重力到 无法缩放的东西,例如“中心”

    gravity 的可扩展性如何?center 的值如何使其不可扩展?

【问题讨论】:

    标签: android android-drawable android-bitmap


    【解决方案1】:

    除了@Cristopher_Boyd 所说的。屏幕密度也很重要,因此应该为不同的屏幕密度创建不同的位图。如果drawable 文件夹中直接存在单个图像,则它可能无法正确缩放。因此,例如,生成不同的图像,或将单个图像放在drawables-xxhdpi 文件夹中(但不在drawables 上)。看到这个answer。

    希望这对某人有所帮助,

    哈维

    【讨论】:

      【解决方案2】:
      1. 似乎图层列表项在 X 和 Y 维度上都被有效地拉伸以适应容器。

      2. 每个项目都需要一个可绘制对象。位图子元素有效地成为该项目的可绘制对象。

        如果你有一个空项目(没有可绘制资源),当你尝试加载层列表时会导致错误。

      3. Gravity 有几个选项(例如 FILL,这可能是项目的默认重力,或 FILL_HORIZONTAL 拉伸项目以填充其容器)。

        此外,您可以在项目标签本身上设置 android:gravity="center"(没有 &lt;bitmap&gt; 子标签),它似乎具有相同的效果(至少在 API 23 中)。

      【讨论】:

        猜你喜欢
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2015-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多