You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:08:38