layer-list 是 Android 中用于 XML 图层叠加的 drawable 容器,按声明顺序从下到上堆叠,支持 shape、color、bitmap 等类型,可通过 android:top/bottom/left/right 偏移和 gravity 精确定位各层,常用于圆角边框、角标、轻量阴影等场景。
Android 的 layer-list 是一种在 XML 中实现图层叠加的简单而强大的方式,常用于组合多个 drawable(如颜色、形状、图片)来构建复杂 UI 元素,比如带边框的圆角背景、带阴影的按钮、状态指示器等。
layer-list 本质是一个“从下到上”的堆叠容器:XML 中靠前的 item 在底层,靠后的 item 在顶层(类似 PS 的图层顺序)。每个 可以是 shape、color、bitmap、selector 等任意 drawable 类型。
所有 item 默认铺满整个容器尺寸;可通过 android:top、android:bottom、android:left、android:right 设置偏移,实现错位或留白效果。
1. 圆角背景 + 边框(最常用)
用两个 shape:底层是填充色(带圆角),上层是描边(同圆角,但 stroke 宽度 + 小尺寸偏移模拟“内边框”):
2. 图标 + 角标(Badge)
把一张图标(bitmap)和一个红色圆形(shape)叠加,用 android:gravity 和 android:top/right 定位角标:
3. 模拟阴影(轻量级)
用深色矩形偏移后置于底层,再叠加主内容,适合静态控件(注意:不如 elevation 或 MaterialCardView 灵活):
尺寸控制要统一:如果 layer-list 用作 View 背景,最终尺寸由最外层 item 决定(或由 View 自身宽高约束)。建议显式设置 或用 android:width/height 配合 android:gravity 精确布局。
gravity 影响定位逻辑:当 item 内部 drawable 尺寸小于容器时,android:gravity 控制其对齐方式(如 center、bottom|end),配合 top/bottom/left/right 可微调位置。
支持状态切换:可以把整个 layer-list 放进 selector 的不同 state 中,实现按压/禁用等视觉反馈(例如按压时改变某一层的颜色)。
开发时可临时给每层加不同纯色(如 #FF0000、#00FF00、#0000FF),快速验证图层顺序和偏移是否符合预期。上线前再换回真实样式。
基本上就这些 —— 不复杂但容易忽略偏移和 gravity 的组合效果。多试几次,就能熟练做出各种实用复合背景。
# android
# xml
# 堆
# ui
# 圆角
# 图层
# 可通过
# 是一个
# 是一种
# 就能
# 多个
# 几次
# 从下到上
# 可选
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
php485支持哪些操作系统_php485跨系统支持情况介绍【解答】
如何使用Golang实现基本类型比较_Golang比较操作符使用方法
Python高性能计算项目教程_NumPyCythonGPU并行加速
c++ std::future和std::promise c++线程间通信【教程】
Win11文件扩展名怎么显示_Win11查看文件后缀名设置【基础】
Win11怎么检查TPM2.0模块_Windows11受信任平台模块开启状态查询
C++如何使用std::async进行异步编程?(future用法)
如何使用Golang实现聊天室消息存档_存储聊天记录到文件
Win11文件扩展名怎么显示 Win11查看文件后缀名设置【步骤】
如何使用Golang实现多重错误处理_Golangerror组合与判断方法
PHP主流架构怎么监控运行状态_工具推荐【操作】
Mac自带的词典App怎么用_Mac添加和使用多语言词典【技巧】
如何用列表一次性对 DataFrame 的指定列应用字典映射
英国搜索:多数英国人认为语言搜索是未来搜索
Python数据挖掘进阶教程_分类回归与聚类案例解析
C++中引用和指针有什么区别?(代码说明)
如何高效获取循环末次生成的 NumPy 数组最后一个元素(无需额外循环)
Python随机数生成_random模块说明【指导】
Mac怎么设置鼠标滚动速度_Mac鼠标设置详细参数
LINUX如何删除用户和用户组_Linux userdel和groupdel命令用法【系统管理】
Windows10无法连接到Internet_Win10网络重置命令详解
php8.4匿名类怎么用_php8.4匿名类创建与使用场景【介绍】
MAC如何快速搜索大文件_MAC磁盘空间分析与冗余数据清理【方法】
如何提升Golang程序I/O性能_Golang I/O密集型程序优化示例
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
Windows如何拦截2345弹窗广告_Windows拦截2345弹窗方法【步骤】
如何在Golang中使用replace替换模块_指定本地或远程路径
短链接怎么用php递归还原_多层加密链接的处理法【详解】
如何在Golang中使用log包输出不同级别日志_Golang log日志管理与分类
如何在Golang中实现文件下载_Golang文件传输与内容类型处理方法
如何在Golang中实现服务熔断与限流_Golang微服务容错与流控方法
如何在Golang中使用内置函数_Golanglen append make等使用技巧
零基础学会Python自动化办公_高效处理Excel与PDF文档
Win11怎么恢复出厂设置_Win11重置此电脑保留文件方法【详解】
Mac的Time Machine怎么用_Mac系统备份与数据恢复【完整指南】
Windows任务计划服务异常原因_任务调度失败的处理方案
PHP cURL GET请求:正确设置认证与自定义请求头的完整教程
Python文本编码与解码_跨平台解析说明【指导】
如何在Golang中解压文件_Golang compress/gzip解压操作方法
Windows10怎么用“讲述人”读屏辅助 Windows10轻松使用开启讲述人朗读屏幕文字帮助视障用户【教程】
php删除数据怎么软删除_添加is_del字段标记删除【技巧】
如何使用Golang实现RPC序列化与反序列化_Golang RPC数据编码与解码方法
Win11怎么设置鼠标宏_Win11鼠标按键自定义编程教程【详解】
Win11无法拖拽文件到任务栏怎么办_Win11开启拖放功能修复【方法】
Win11怎么更改账户头像_Windows 11自定义用户头像图片设置【步骤】
windows系统如何安装cab更新补丁_windows手动安装更新包教程
如何在网页无标准表格标签时高效提取结构化数据
如何在 Go 中判断变量是否为函数类型
如何使用Golang实现微服务事件驱动_使用消息总线解耦服务
Linux如何挂载新硬盘_Linux磁盘分区格式化与开机自动挂载【指南】
2025-12-16
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。