【问题标题】:Android layer-list does not show scale drawable item?Android 图层列表不显示可缩放的可绘制项目?
【发布时间】:2011-12-02 03:02:11
【问题描述】:

使用下面的图层列表,我的可绘制比例永远不会显示。这是为什么呢?

menu_dialog_header.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape>
      <solid android:color="@color/black"></solid>
    </shape>
  </item>
  <item>
    <scale
      android:scaleHeight="50%"
      android:scaleWidth="100%"
      android:scaleGravity="top"
      android:drawable="@drawable/shine" />
  </item>
</layer-list>

shine.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle">
  <solid android:color="@color/shine" />
</shape>

menu_dialog.xml

<!-- header -->
<LinearLayout
  android:background="@drawable/menu_dialog_header"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:gravity="center_horizontal|center"
  android:padding="8dp"
  android:orientation="horizontal" >
  ...

【问题讨论】:

    标签: android


    【解决方案1】:

    我有一个可能对你有用也可能对你不起作用的解决方法:而不是使用&lt;scale&gt; ,试试&lt;inset&gt;。您可以使用 &lt;item&gt;android:top / android:bottom / android:left / android:right&lt;inset&gt; 的 android:insetXXX 的组合来调整图像大小

    您可以执行一些操作,例如将每个插入值的边设置为相对于源图像的尺寸。例如,如果您有一个 64 像素宽的图像并希望将其缩小 50%,则可以对每一边执行 (64 / 4 = 16)

    【讨论】:

    • 我不明白这与单次使用项目有何不同。你能举个例子吗?
    • @Joe,我的朋友,你是国王!为了获得更通用的机制,我必须以编程方式执行此操作,因此存在不变性问题,但这个插入的想法正是我所需要的。
    • 很有趣,刚回到 Android 就忘了我问过这个问题。我在一个新项目中使用这个插入答案,因为我不相信它是 2011 年(v2.3)的一个选项。
    • 当然。即使它是一个选项,有时它也可能被埋在某处的页面上,或者你后来发现如何使用它并说“哦!这就是它的用途!”或“我从没想过!”我也想积极预防xkcd.com/979
    【解决方案2】:

    这不完全是 LayerLists 的错。 ScaleDrawable 还取决于 drawable 的级别,正如(简要)在 Drawable Resources 和 ScaleDrawable 参考中提到的那样。

    似乎没有关于 ScaleDrawable 如何解释关卡的文档。

    似乎没有办法在 XML 中设置可绘制对象的级别,这反映了 ScaleDrawable 的主要用例是为可绘制对象的大小设置动画。因此,您必须在代码中设置可绘制对象的级别。

    我非常赞同您在此处使用 ScaleDrawable,因为它允许通过定位和定义大小来以更强大的方式堆叠可绘制对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多