新闻中心

Android的drawable xml中layer-list怎么用 图层叠加

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

android的drawable xml中layer-list怎么用 图层叠加

Android 的 layer-list 是一种在 XML 中实现图层叠加的简单而强大的方式,常用于组合多个 drawable(如颜色、形状、图片)来构建复杂 UI 元素,比如带边框的圆角背景、带阴影的按钮、状态指示器等。

layer-list 基本结构和原理

layer-list 本质是一个“从下到上”的堆叠容器:XML 中靠前的 item 在底层,靠后的 item 在顶层(类似 PS 的图层顺序)。每个 <item></item> 可以是 shapecolorbitmapselector 等任意 drawable 类型。

所有 item 默认铺满整个容器尺寸;可通过 android:topandroid:bottomandroid:leftandroid: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:gr*ityandroid:top/right 定位角标:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <!-- 主图标 -->
  <item android:drawable="@drawable/ic_notification" />
<p><!-- 红色角标 -->
<item android:gr*ity="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. 模拟阴影(轻量级)

Gaga Gaga

曹越团队开发的AI视频生成工具

Gaga 1151 查看详情 Gaga

用深色矩形偏移后置于底层,再叠加主内容,适合静态控件(注意:不如 elevation 或 MaterialCardView 灵活):

  • 底层:黑色半透明矩形,向右下偏移
  • 中层:稍浅的灰色矩形(进一步模糊感,可选)
  • 顶层:实际内容(如白色圆角背景)

关键细节和注意事项

尺寸控制要统一:如果 layer-list 用作 View 背景,最终尺寸由最外层 item 决定(或由 View 自身宽高约束)。建议显式设置 <size></size> 或用 android:width/height 配合 android:gr*ity 精确布局。

gr*ity 影响定位逻辑:当 item 内部 drawable 尺寸小于容器时,android:gr*ity 控制其对齐方式(如 centerbottom|end),配合 top/bottom/left/right 可微调位置。

支持状态切换:可以把整个 layer-list 放进 selector 的不同 state 中,实现按压/禁用等视觉反馈(例如按压时改变某一层的颜色)。

调试小技巧

开发时可临时给每层加不同纯色(如 #FF0000、#00FF00、#0000FF),快速验证图层顺序和偏移是否符合预期。上线前再换回真实样式。

基本上就这些 —— 不复杂但容易忽略偏移和 gr*ity 的组合效果。多试几次,就能熟练做出各种实用复合背景。

以上就是Android的drawable xml中layer-list怎么用 图层叠加的详细内容,更多请关注其它相关文章!


# 是一种  # 企业短视频SEO黄先生  # 优化网站的在线咨询平台  # 网页设计和网站建设行业  # 亦庄网站建设推广公司  # 烤鱼有什么营销推广  # 息县矩阵推广营销  # 闵行网站建设信息  # 水上乐园推广营销方案  # 燕郊知乎营销推广公司  # 网站制作优化简历设计  # android  # 有何不同  # 是一个  # 数据交换  # 什么用  # 使用技巧  # 它与  # 可通过  # 圆角  # 图层 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作  CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略  sublime怎么覆盖插件的默认快捷键_sublime快捷键优先级与设置  高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法  腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录  优化Django表单:提交验证失败后保留用户输入  J*aScript中管理异步API调用:确保操作顺序与数据一致性  必由学官网快捷入口 必由学网页版在线学习平台  微信网页版官方入口直达 微信网页版网页版登录使用方法  抖音创作助手登录入口_抖音创作辅助工具官网直达  12306选座怎么选到商务座_12306商务座选择与配置说明  优化MinIO list_objects_v2 操作的性能瓶颈与最佳实践  照顾宝贝2小游戏点击立即在线玩  苹果手机如何防止被恶意App追踪  如何使用Rector自动化升级旧代码_通过Composer安装和配置Rector进行代码重构  怎么在mac上运行html代码_mac运行html代码方法【指南】  优化HTML表单样式:解决输入框焦点跳动与元素间距问题  126邮箱网页版官方入口 126邮箱账号在线登录平台  c++如何使用Meson构建系统_c++比CMake更快的构建工具  创客贴用户入口官网登录 创客贴网页版电脑版系统  AO3官方在线访问地址 Archive of Our Own最新镜像合集  Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】  字由网在线版登录地址 字由网网页版安全入口  一加Ace 6T支持全新明眸护眼:通过了最严苛的护眼小金标认证  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  蛙漫2台版漫画地址 Manwa2正版网页版链接  漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口  css子元素高度不一致导致布局错位怎么办_使用align-items:stretch解决高度差异  魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】  在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析  TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法  MAC怎么让Dock栏只显示当前运行的应用_MAC终端命令实现极简Dock栏  小米汽车11月交付量突破40000台!雷军:将继续努力  如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  蛙漫正版漫画平台入口_蛙漫免费阅读全站漫画资源  CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠  HTML元素状态管理:根据DIV内容动态启用/禁用按钮  快手极速版在线观看 官方网页版登录地址  如何提高微信支付的安全性_微信支付安全防护与设置建议  Word2013如何插入视频和音频媒体_Word2013媒体插入的多媒体支持  PHP中高效并行检查多链接状态的教程  2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC  Win11 BitLocker密码忘了怎么办 Win11找回BitLocker恢复密钥方法【解决】  微信客户端如何收红包_微信客户端接收红包使用教程  Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法  mysql如何设置表访问权限_mysql表访问权限配置  HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解  React Router 嵌套组件中 URL 重定向问题的解决方案  Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】 

搜索