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

wor*_*ked 9 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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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" >
  ...
Run Code Online (Sandbox Code Playgroud)

Joe*_*nte 14

我有一个可能或可能不适合您的解决方法:而不是使用<scale> ,请尝试<inset>.您可以使用<item>'s android:top/ android:bottom/ android:left/ android:right<inset>android:insetXXX的组合来调整图像大小

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

  • 确实。即使它是一个选项,有时它也可能被隐藏在页面的某个地方,或者您后来发现如何使用它并说“哦!这就是它的用途!” 或“我从来没想过这一点!” 我也想积极预防http://xkcd.com/979/ (2认同)

cla*_*ker 7

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

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

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

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