XML 布局中视图的资源 ID 在所有布局中必须是唯一的吗?
例如,我正在开发一个小食谱管理应用程序。我有一个用于添加新成分的布局文件。在此布局中,我有一个用于成分的 EditText,我想将其称为“edt_name”。但恐怕这个名字太笼统了;例如,我可能在其他 XML 布局文件中也有一个用于菜谱名称、烹饪过程名称等的 EditText。
但是,我也不想让标签变得不必要的复杂。如果可以的话,我想避免将上述 EditText 称为“edt_name_new_ingredient”。
我很好奇开发人员一般如何组织他们的资源。据我所知,Android 不支持资源子目录,因此命名方案可能会变得非常混乱。
Must the resource ID's for views in XML layouts be unique across all layouts?
For example, I'm working on a little recipe manager app. I have a layout file for adding a new ingredient. In this layout I have an EditText for the ingredient that I'd like to call "edt_name". But I'm afraid that this name is too general; e.g. I might also have an EditText for a recipe name, a cooking procedure name, etc in other XML layout files.
However, I also don't want to make the labels more complex than necessary. I'd like to avoid calling the aforementioned EditText "edt_name_new_ingredient" if I could.
I'm curious as to how developers organize their resources in general. Android doesn't support sub-directories for resources as far as I know, so naming schemes can get really messy.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不可以,资源 ID 在不同的 xml 布局中不应是唯一的,但它们在特定的 xml 文件中必须是唯一的。
No, resource ID should not be unique across different xml layouts however they must be unique in a particular xml file.
资源 ID 在包内以命名空间命名。当您访问资源(例如 XML 格式)时,包名称会隐式设置为当前名称。您可以将其他资源文件放在不同的包中,并引用您的代码或 XML 中的资源文件(这是访问 SDK 附带的平台资源的方式)。
类似地,在代码中,您可以访问不同包的
R
类并使用其资源,但同一包中的所有类都必须具有唯一的名称。更多信息可以在此处文档中找到。
Resource IDs are namespaced within the package. When you access a resource (in XML, for example), the package name is implicitly set to the current one. You can have other resource files in a different package and refer to those within your code or XML (this is how one accesses the platform resources that come with the SDK).
Similarly in code, you can access a different package's
R
class and use its resources, but all those within the same package must have unique names.More info can be found in the documentation here.