在Android的XML drawable资源中,layer-list可以将多个图层按顺序叠加显示,每个图层的位置和尺寸都可以通过item标签的属性单独控制,其中bottom属性就是用来设置当前图层距离layer-list底部边缘的偏移距离。

layer-list基础结构说明
layer-list的根标签是<layer-list>,内部可以包含多个<item>标签,每个<item>代表一个独立的图层,图层会按照定义的顺序从下到上叠加显示。每个item支持设置top、bottom、left、right四个偏移属性,单位可以是dp、px等Android支持的尺寸单位。
bottom属性的作用
bottom属性表示当前图层距离layer-list容器底部的内边距,数值越大,图层距离底部越远,也就是图层会向上偏移。比如设置bottom="20dp",代表图层的底部边缘距离layer-list的底部边缘有20dp的距离。
实现bottom偏移的完整示例
以下是一个控制图层距离底部30dp的完整layer-list配置代码:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 底层背景图层 -->
<item>
<shape android:shape="rectangle">
<solid android:color="#FFE0E0E0" />
</shape>
</item>
<!-- 上层偏移图层,距离底部30dp -->
<item
android:bottom="30dp"
android:left="20dp"
android:right="20dp"
android:top="20dp">
<shape android:shape="rectangle">
<solid android:color="#FF6200EE" />
<corners android:radius="8dp" />
</shape>
</item>
</layer-list>
上述代码中,第二个item设置了bottom="30dp",同时搭配了left、right、top的偏移,最终这个紫色圆角矩形图层会在灰色背景之上,距离layer-list底部30dp,四周各有20dp的边距。
属性组合生效规则
当同时设置bottom和其他偏移属性时,需要注意以下生效逻辑:
- bottom和top同时设置时,会分别限制图层的上下边距,图层的高度会被压缩为容器高度减去top和bottom的总和
- 如果只设置bottom不设置top,图层会从容器顶部开始延伸,直到距离底部bottom的距离处停止
- 偏移属性的优先级高于shape内部设置的尺寸属性,比如shape设置了固定高度,同时设置了bottom偏移,最终会以偏移后的位置为准
常见问题说明
如果设置bottom偏移后没有生效,可以检查以下几点:
- 确认layer-list的父容器是否给了足够的高度,如果父容器高度和图层高度一致,bottom偏移可能无法显示效果
- 检查是否有其他item的偏移属性覆盖了当前图层的显示区域
- 确认尺寸单位是否正确,避免使用无效的单位导致属性不生效
如果需要动态修改bottom偏移距离,可以在Java或Kotlin代码中获取layer-list的item对象,通过修改其bounds属性来实现,不过XML静态配置的方式更适合大多数固定样式的场景。
Androidlayer-listbottom偏移XML图层距离修改时间:2026-07-19 04:48:17