我是 Android 开发的新手。对图像和TextViews
不同的Layout
XML 文件使用相同的 ID 是否可以?
当eclipse为我自动列出它们时,它会列出项目中的所有布局变量,所以它会发生冲突吗?到目前为止,我还没有注意到在不同布局中使用相同的 ID 有任何问题,但从长远来看,我很担心。
我是 Android 开发的新手。对图像和TextViews
不同的Layout
XML 文件使用相同的 ID 是否可以?
当eclipse为我自动列出它们时,它会列出项目中的所有布局变量,所以它会发生冲突吗?到目前为止,我还没有注意到在不同布局中使用相同的 ID 有任何问题,但从长远来看,我很担心。
简短的回答:是的,你可以。
长答案:您可以这样做,因为每当您使用 findViewById() 来获取对布局的一部分的引用时,该方法只会在当前膨胀的布局中查找该视图。因此,即使您在另一个布局中有另一个具有相同 ID 的视图,Android 也不会在那里寻找它。
建议您为不同的布局使用不同的 id。从长远来看,当你有很多布局并因此有很多 id 时,区分它们会变得非常复杂。
我通常这样命名我的 id layoutName_elementId
:.
它可以让我轻松找到我正在寻找的 id,尤其是在使用自动完成时(我知道我正在使用什么布局,但我并不真正知道 id;在这种情况下,根据我的命名策略,我只需输入布局名称,它就会显示该布局的所有 id)。
有关布局和 ID 的更多信息,请参见此处。
快乐编码,
根据开发人员 API 指南:
ID 不必在整个树中是唯一的,但它应该在您正在搜索的树的一部分中是唯一的(这通常可能是整棵树,因此最好尽可能完全唯一)。
所以简短的回答是它不是强制性的,但它是避免可能发生的冲突的好习惯。
不推荐,因为如果将来你需要重构view
id
,Android Studio 会在所有XML
文件和类中重构它,你会遇到麻烦。
但是在某些情况下,您确实需要使用相同id
的,例如,如果您有一些抽象并且您重用多个布局。
如果您的项目中有多个views
相同id's
的,并且您需要重构,请手动进行,不要使用 IDE 中的构建功能,更改布局id
内的目标视图,XML
然后修复布局内的红色错误。
更新:
目前 Android Studio 支持使用“仅在当前文件中重构”选项进行重构。
更新:视图绑定
如果您的嵌套布局(包括标签)的视图 id 与他的层次结构中的 id 冲突,则可能会出现强制转换异常。