LayerList drawable scale的项目如何适合容器视图?

时间:2016-03-15 19:39:06

标签: android android-drawable android-bitmap

从此developer guide about Layer-list drawables

  1.   

    缩放所有可绘制项目以适合包含视图的大小,   默认情况下。因此,将图像放在不同的图层列表中   位置可能会增加视图的大小,一些图像缩放为   合适的。

    在第一句中,他们说这些项目是按比例缩放的 容器视图(而不是根据视图缩放视图 包含在其中的项目的大小)。然后他们说那个大小 容器视图可能会增加(这意味着View是 缩放,对吗?)。 第二句也不矛盾 第一个?有人可以解释那里有什么意思吗?

  2.   

    android:drawable

         

    可绘制资源。的必需即可。引用可绘制资源。

         

    ...

         

    要避免缩放列表中的项目,请使用    元素内部的元素,用于指定drawable ...

         

    ...

         

    例如,以下定义了一个缩放到的项目   适合其容器查看:

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

    为避免缩放,以下示例使用具有居中重力的元素:

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

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

  3.   

    要避免缩放列表中的项目,请使用内部的<bitmap>元素   <item>元素指定drawable并定义重力   不能扩展的东西,比如“中心”

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

2 个答案:

答案 0 :(得分:6)

  1. 看来,图层列表项目在X&amp; Y尺寸适合容器。
  2. 每个项目都需要一个drawable。位图子元素有效地成为该项的可绘制对象。

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

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

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

    < / LI>

答案 1 :(得分:0)

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

希望这对某人有帮助

Xavi