Android中shape.xml是定义Drawable资源的XML文件,用于实现圆角、边框、渐变等效果;根元素为,需指定android:shape类型(如rectangle、oval等);rectangle支持设圆角,设边框,设填充色;常存于res/drawable/下,通过@drawable引用。

Android 中的 shape.xml 是用 XML 定义的 Drawable 资源,常用于实现按钮、背景等的圆角、边框、渐变等效果。它写在 res/drawable/ 目录下,通过 android:background="@drawable/xxx" 引用。
基础结构:必须的根标签和 shape 类型
所有 shape 必须以 为根节点,并指定 android:shape 类型,常用值有:
- rectangle(矩形,最常用,支持圆角、边框、填充)
- oval(椭圆,可用于圆形按钮或进度条背景)
-
line(直线,需配合
使用) - ring(环形,多用于 ProgressBar)
实现圆角:用 corners 标签控制四个角
只有 android:shape="rectangle" 支持 。可统一设圆角半径,也可单独设置每个角:
android:topLeftRadius="4dp" android:topRightRadius="12dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="8dp" />
注意:android:radius 会覆盖各方向独立属性;若只设某几个角,其余默认为 0。
添加边框:用 stroke 标签定义线条
用来画边框,支持颜色、宽度、虚线(可选):
android:dashGap="4dp" />
⚠️ 如果只加边框不设填充(),默认是透明背景,看起来就像“空心”矩形。需要边框+背景色时,记得同时加 。
完整示例:带圆角、边框和背景色的按钮背景
保存为 res/drawable/bg_rounded_button.xml:
然后在 Button 中使用:
android:background="@drawable/bg_rounded_button"。基本上就这些。shape.xml 不复杂但容易忽略细节,比如漏写
导致背景透明,或误用oval却想设corners(不支持)。按需组合 corners、stroke、solid 就能覆盖大多数 UI 场景。










