使用下面的图层列表,我的尺度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" >
...
答案 0 :(得分:14)
我有一个可能适合或不适合您的解决方法:而不是使用<scale>
,试试<inset>
。您可以将<item>
的{{1}} / android:top
/ android:bottom
/ android:left
和android: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。