尝试使用LayerDrawable (在XML中定义为层列表)将多个形状图相互分层;用作布局的背景。
安卓指南(对于LayerList)说:
默认情况下,所有可绘制的项都按比例缩放以适应包含视图的大小。因此,将图像放置在不同位置的图层列表中可能会增加视图的大小,并在适当的情况下增加某些图像的比例。若要避免缩放列表中的项,请在
<bitmap>
元素中使用<item>
元素指定可绘制项,并将重力定义为不缩放的东西,如“中心”。
我不希望我的形状缩放,但我不确定如何正确地将它们包装在bitmap
标记中:如果我这样做,会产生一个错误:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:src="@drawable/layer_one"
android:gravity="center" />
</item>
<item>
<bitmap
android:src="@drawable/layer_two"
android:gravity="center" />
</item>
<item>
<bitmap
android:src="@drawable/layer_three"
android:gravity="center" />
</item>
<item>
<bitmap
android:src="@drawable/layer_four"
android:gravity="center" />
</item>
</layer-list>
抱怨:
二进制XML文件行#25:
<bitmap>
需要一个有效的src属性
其中一个可绘制的示例,例如res/drawable/layone.xml:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/layer_one.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
</shape>
Android站点上使用的示例使用图像作为可绘制的,而不是XML定义的形状(并不是说我的错误是特定于这些图形的,也不是说我在某个地方犯了一个愚蠢的错误)。任何线索都很感激谢谢。
这个问题的答案是,您不能使用XML绘图作为位图的src。我已经修改了问题的标题,现在问您如何防止形状缩放(从而调整容器视图的大小)而不使用bitmap
,或者我是否被迫使用实际的图像资源?
添加了一个图像的期望结果-有一个背景与一个正常的矩形填充形状或其他,然后分层,更多的形状绘图(这里有3个椭圆)。在左边是理想的,允许顶部和左边的偏移,在右边是很好的,所有的形状都进入一个默认的位置:
发布于 2012-04-07 18:22:23
是的,(根据我以前的https://stackoverflow.com/questions/9788726/using-drawable-resources),您不能在位图中使用xml。构建它很好,但是当你运行这个应用程序时,它会崩溃。
关于语句,use a <bitmap> element inside the <item> element
意味着您可以在层列表中定义更多的形状,这就是它的目的。虽然您也可以定义位图,但是位图应该有一个src值,它引用的是实体图像(而不是xml)。
您可以做的是将layer_one、layer_two和其他层的xml插入到layer_list xml中。例如:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:shape="rectangle" >
<solid android:color="#FFFFFF" />
<corners
android:bottomLeftRadius="15dp"
android:bottomRightRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
</shape>
</item>
<!-- and so on with your other shapes -->
</layer-list>
希望它能起作用:)
https://stackoverflow.com/questions/10055892
复制相似问题