首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不使用位图防止形状在LayeredList中缩放

不使用位图防止形状在LayeredList中缩放
EN

Stack Overflow用户
提问于 2012-04-07 15:52:43
回答 1查看 5K关注 0票数 11

尝试使用LayerDrawable (在XML中定义为层列表)将多个形状图相互分层;用作布局的背景。

安卓指南(对于LayerList)说:

默认情况下,所有可绘制的项都按比例缩放以适应包含视图的大小。因此,将图像放置在不同位置的图层列表中可能会增加视图的大小,并在适当的情况下增加某些图像的比例。若要避免缩放列表中的项,请在<bitmap>元素中使用<item>元素指定可绘制项,并将重力定义为不缩放的东西,如“中心”。

我不希望我的形状缩放,但我不确定如何正确地将它们包装在bitmap标记中:如果我这样做,会产生一个错误:

代码语言:javascript
运行
复制
<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:

代码语言:javascript
运行
复制
<?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个椭圆)。在左边是理想的,允许顶部和左边的偏移,在右边是很好的,所有的形状都进入一个默认的位置:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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中。例如:

代码语言:javascript
运行
复制
<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>

希望它能起作用:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10055892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档