如何从现有Vector Drawable生成内嵌图标的圆形Vector Drawable?
当然有啦!下面几种简便方法都能帮你快速实现这个需求,不用从零开始折腾Vector Drawable代码:
方法1:直接修改现有Vector Drawable代码
这是最直接的方式,只需要在原文件里加个圆形背景层就行:
- 打开你现有的Vector Drawable XML文件
- 在
<vector>标签内,优先添加圆形路径(放在原有图标路径的前面,这样圆形会作为底层背景):
注意:这里的数值是基于默认的<path android:fillColor="#FFFFFF" <!-- 替换成你想要的圆形背景色 --> android:pathData="M24,12a12,12 0 1,1 -24,0a12,12 0 1,1 24,0"/>android:viewportWidth="24"和android:viewportHeight="24",如果你的文件viewport尺寸不一样,要对应调整圆形的半径和中心坐标哦。 - 如果原有图标没居中,给它的路径加
android:translateX/android:translateY属性,或者直接调整pathData的坐标,确保它在圆形正中间。
方法2:用Layer List组合(不修改原图标)
这种方法不用动原有的Vector Drawable,直接新建一个组合文件就行,复用性拉满:
- 在
res/drawable下新建XML文件,比如icon_with_circle.xml - 写入以下代码,替换成你的图标和想要的样式:
这种方式的好处是,圆形和图标可以独立调整尺寸,原图标还能在别的地方继续用。<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 圆形背景层 --> <item> <shape android:shape="oval"> <solid android:color="#FFFFFF"/> <!-- 圆形背景色 --> <size android:width="48dp" <!-- 圆形整体大小 --> android:height="48dp"/> <!-- 想要边框的话加下面这行 --> <!-- <stroke android:color="#000000" android:width="2dp"/> --> </shape> </item> <!-- 原有图标层 --> <item android:drawable="@drawable/your_existing_vector_icon" <!-- 替换成你的图标路径 --> android:width="24dp" <!-- 图标大小 --> android:height="24dp" android:gravity="center"/> </layer-list>
方法3:Android Studio可视化操作(不用写代码)
如果你怕写代码出错,用Android Studio的可视化工具就能搞定:
- 打开现有Vector Drawable,切换到Design视图
- 在左侧的Drawable Inspector面板里,点击「Add Layer」按钮,选择「Path」
- 在画布上画个圆形(或者直接从预设形状里选圆形),调整它的颜色、大小,然后把它拖到图层列表的最底层
- 拖动原有图标到圆形中心位置,保存文件就完成啦
最后提个小细节:如果圆形需要边框,不管用哪种方法,都能通过添加stroke属性/标签来实现,记得调整边框的颜色和宽度哦~
内容的提问来源于stack exchange,提问作者jakub
相关产品推荐
相关产品推荐

