Drawable文件命名规范:Drawable XML文件命名有何最佳实践?
Android Drawable 文件命名规范与最佳实践
嘿,这个问题问到点子上了——Drawable命名看似是小事,但对项目的可维护性影响超大!尤其是团队协作的时候,统一的规则能省不少沟通成本。我结合日常开发和社区通用的最佳实践给你梳理下:
通用基础规则
首先是所有Android资源文件都要遵守的硬要求,Drawable也不例外:
- 全小写字母,用下划线
_分隔单词,绝对不能出现大写字母、空格或者特殊字符(比如button_primary_normal是对的,ButtonPrimary或者button primary就不行) - 不能以数字开头,也不要用Android系统保留的名称(比如别随便叫
ic_launcher除非你真的是在做应用图标)
分类型的命名最佳实践
你提到的button_和ic_开头的差异,其实是社区约定的按Drawable用途分类的命名方式:
- 图标类(以
ic_开头):这类是指小型的、作为UI元素点缀的图标,比如按钮内部的图标、导航栏图标、状态指示图标。命名建议结构:ic_[图标核心名称]_[状态/样式变体]
举几个例子:ic_search_active、ic_menu_white、ic_checkbox_selected - 背景/形状类(比如
button_开头):这类是作为背景填充、容器样式的Drawable,比如按钮的背景形状、卡片的阴影层、分割线。命名建议结构:[用途/组件]_[状态/样式]
例子:button_primary_pressed、card_rounded_bg、divider_gray
关于你遇到的命名不一致问题
如果你的button_和ic_开头的文件实际用途几乎一致,那大概率是之前的命名逻辑混淆了:
- 如果是按钮上的图标(比如按钮内部的搜索图标),应该归到
ic_类,比如ic_button_search - 如果是按钮的背景样式(比如圆角填充的按钮背景),才用
button_开头,比如button_primary_bg
如果确实是同一种用途的文件,建议尽快统一命名规则——不然后续维护的时候,你自己都得花时间回忆哪个是哪个,更别说新接手的同事了。
额外的实用建议
- 明确标注状态:给不同交互状态的Drawable加上后缀,比如
_normal、_pressed、_disabled、_selected,一眼就能区分 - 区分样式变体:如果有不同颜色、尺寸的版本,加上对应的后缀,比如
_white、_large、_outline - 语义化优先:别用
bg1、icon2这种模糊的命名,要让名字直接体现用途,比如profile_avatar_border比border1清晰100倍 - 按模块分组(命名层面):大型项目里,可以在命名里加入模块前缀,比如
ic_cart_add、cart_item_bg,一眼就能知道属于购物车模块
总的来说,核心原则就是语义清晰+团队统一。社区的约定是为了让大家有共同的认知,但如果你们团队有自己的一套规则,只要能保持一致,也完全没问题——毕竟能快速理解每个Drawable的用途才是最终目的。
内容的提问来源于stack exchange,提问作者B.Cakir
相关产品推荐
相关产品推荐

