Android图层列表不显示比例可绘制项目?

时间:2011-12-02 03:02:11

标签: android

使用下面的图层列表,我的尺度drawable永远不会显示。那是为什么?

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" >
  ...

2 个答案:

答案 0 :(得分:14)

我有一个可能适合或不适合您的解决方法:而不是使用<scale> ,试试<inset>。您可以将<item>的{​​{1}} / android:top / android:bottom / android:leftandroid:right的android:insetXXX组合使用调整图像大小

您可以执行以下操作:将每个插入值的边设置为相对于源图像的尺寸。例如,如果您有一个64像素宽的图像并想要将其减少50%,则可以为每一侧做(64/4 = 16)

答案 1 :(得分:7)

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

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

似乎无法在XML中设置drawable的级别,这反映了ScaleDrawable的主要用例是为drawable的大小设置动画。因此,您必须在代码中设置drawable的级别。

我非常同情你在这里使用ScaleDrawable,因为它允许通过能够定位drawable并定义它们的大小来更强大的方式来堆叠drawables。