在Android中命名资源的最简单方法是什么?

Oll*_*e C 14 android android-layout

您对资源文件和ID使用哪些命名约定以及它们带来了哪些好处?

例如,很容易得到像"activity_settings_location_text_label"这样的视图ID,但很快变得难以管理和混乱.我没有看到谷歌对此有任何指导,我是否想念它?

资源可以使用分层命名"分组",但哪种结构最适合每种资源类型?字符串,颜色,尺寸,布局,包括等等

我的命名目前是相当临时的,很明显我需要更好的结构(特别是我可以使用IDE的代码完成更容易找到ID).

Dav*_*ave 12

我想,最重要的是要记住,在多个布局中使用相同的ID是完全正确的.例如,@id/title_bar是干净的,通用和工程等且非常简单@id/settings_title_bar,@id/home_screen_title_bar,@id/search_title_bar等等.

我也喜欢命名为destinated活动布局@layout/activity_home@layout/activity_search为Android使用,即等可绘和图标应采用同样的标准@drawable/ic_btn_explode@drawable/ic_dialog_exploded.

包含可能是棘手的,但更简单的只包含少量元素并提供单一,精确的目的往往最终为@layout/loading@layout/error_message.

我仍在努力明智地命名字符串,但同样简短,简洁的名称使整个过程变得更加容易.

  • 有关图标前缀,请参阅http://developer.android.com/guide/practices/ui_guidelines/icon_design.html#design-tips (3认同)

Kri*_*son 5

所以4年后......这是我在为Android开发时坚持的"最佳实践"列表.

这是关于资源的部分


例如,在命名string资源时,这些是货物和坏处

strings.xml中

使用类似命名空间的键命名字符串,并且不要害怕重复两个或更多键的值.语言很复杂,因此名称空间对于带来上下文和打破歧义是必要的.

<string name="network_error">Network error</string>
<string name="call_failed">Call failed</string>
<string name="map_failed">Map loading failed</string>
Run Code Online (Sandbox Code Playgroud)

<string name="error.message.network">Network error</string>
<string name="error.message.call">Call failed</string>
<string name="error.message.map">Map loading failed</string>
Run Code Online (Sandbox Code Playgroud)


PS如果您使用的是Android Studio,那么重构就是一个完整的问题.它适用于几乎所有东西.不只是java代码.

只需将光标的插入符号放在ID上,然后按SHIFT+ F6键重命名并自动重构.用于动态更改ID

  • 这里只是简单介绍一下"好"的方法.使用"." 当您进行数据绑定时,作为命名空间分隔符将是一个问题,例如当您编写`R.string.error.message.network`时,它将尝试解析`R.string.error`并失败. (4认同)