LayerList xml 如何在 android 中中断?

How does LayerList xml interrupted in android?

官网Layer List explanation有个例子看不懂

例子:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/android_red" />
    </item>
    <item
        android:left="10dp"
        android:top="10dp">
        <bitmap
            android:gravity="center"
            android:src="@drawable/android_green" />
    </item>
    <item
        android:left="20dp"
        android:top="20dp">
        <bitmap
            android:gravity="center"
            android:src="@drawable/android_blue" />
    </item>
</layer-list>

输出:

我不明白两件事:

  1. 为什么 红色 android 不在中间。他是唯一一个没有 topleft 偏移量的人。可能我不明白top和left offset的意思,offset是从哪一点计算的?

  2. 是否 android: gravity="center" 与所有容器相关或与上述项目相关(“他的兄弟姐妹”) ,即第二项是与容器有关还是与第一项有关?

我认为如果您复制这段代码并尝试探索它,您就会明白其中的道理。 事实上,红色 android 在中间,但在这张图片中并不清楚,所以如果你把它放在 imageView 中,它会看起来像这样

为了清晰起见,我给了背景黄色,所以你可以看到红色 android 在中间。

2- android:gravity="center" 适用于包含它的项目,请注意该项目将拉伸到父宽度和高度,因此您可以注意到例如蓝色 android 位于其项目的中心,其左上角为 (10,10),其右下角与父项目相同