layer-list 是 Android 中用于 XML 图层叠加的 drawable 容器,按声明顺序从下到上堆叠,支持 shape、color、bitmap 等类型,可通过 android:top/bottom/left/right 偏移和 gravity 精确定位各层,常用于圆角边框、角标、轻量阴影等场景。

Android 的 layer-list 是一种在 XML 中实现图层叠加的简单而强大的方式,常用于组合多个 drawable(如颜色、形状、图片)来构建复杂 UI 元素,比如带边框的圆角背景、带阴影的按钮、状态指示器等。
layer-list 基本结构和原理
layer-list 本质是一个“从下到上”的堆叠容器:XML 中靠前的 item 在底层,靠后的 item 在顶层(类似 PS 的图层顺序)。每个 <item></item> 可以是 shape、color、bitmap、selector 等任意 drawable 类型。
所有 item 默认铺满整个容器尺寸;可通过 android:top、android:bottom、android:left、android:right 设置偏移,实现错位或留白效果。
常见用法示例
1. 圆角背景 + 边框(最常用)
用两个 shape:底层是填充色(带圆角),上层是描边(同圆角,但 stroke 宽度 + 小尺寸偏移模拟“内边框”):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 底层:灰色填充 -->
<item>
<shape android:shape="rectangle">
<solid android:color="#E0E0E0" />
<corners android:radius="8dp" />
</shape>
</item>
<p><!-- 上层:白色描边(向内缩进1dp,形成内边框效果)-->
<item android:top="1dp" android:bottom="1dp"
android:left="1dp" android:right="1dp">
<shape android:shape="rectangle">
<solid android:color="#FFFFFF" />
<corners android:radius="7dp" />
</shape>
</item>
</layer-list>登录后复制
2. 图标 + 角标(Badge)
把一张图标(bitmap)和一个红色圆形(shape)叠加,用 android:gravity 和 android:top/right 定位角标:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 主图标 --> <item android:drawable="@drawable/ic_notification" /> <p><!-- 红色角标 --> <item android:gravity="top|end" android:top="4dp" android:right="4dp"> <shape android:shape="oval"> <solid android:color="#FF5252" /> <size android:width="16dp" android:height="16dp" /> </shape> </item> </layer-list>
登录后复制
3. 模拟阴影(轻量级)
标签: android
还木有评论哦,快来抢沙发吧~