gpt4 book ai didi

android - 在不使用位图的情况下防止 LayeredList 中的形状缩放

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:34 24 4
gpt4 key购买 nike

尝试使用 LayerDrawable(在 XML 中定义为图层列表)将多个形状可绘制对象叠加在一起;用作布局的背景。

Android 指南 ( for LayerList) 说:

All drawable items are scaled to fit the size of the containing View, by default. Thus, placing your images in a layer list at different positions might increase the size of the View and some images scale as appropriate. To avoid scaling items in the list, use a <bitmap> element inside the <item> element to specify the drawable and define the gravity to something that does not scale, such as "center".

我不想让我的形状缩放,但我不确定如何将它们包裹在 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>

提示:

Binary XML file line #25: <bitmap> requires a valid src attribute

其中一个可绘制对象的示例,例如res/drawable/layer_one.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 定义的形状(并不是说我的错误是针对这些的,我没有在某处犯下愚蠢的错误)。任何线索表示赞赏,谢谢。


Using drawable resources
这个问题的答案指出您不能将 XML 可绘制对象用作位图的 src。我修改了问题的标题,现在询问如何在不使用 bitmap 的情况下防止形状缩放(从而调整容器 View 的大小) ,还是我被迫使用实际的图像资源?


添加了所需结果的图像 - 能够拥有具有规则矩形填充形状或其他形状的背景,然后在此之上分层,更多形状可绘制对象(这里有 3 个椭圆)。左边是理想的,允许顶部和左侧偏移,右边是很好的,所有形状都到默认位置:

enter image description here

最佳答案

是的,(根据我之前的 answer)您不能将 xml drawable 用于位图。可以构建,但当您运行该应用程序时,它会崩溃。

关于声明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>

希望它能起作用:)

关于android - 在不使用位图的情况下防止 LayeredList 中的形状缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com