在Android中命名XML元素id的最佳实践是什么?

在Android中命名XML元素id的最佳实践是什么?,android,xml,Android,Xml,我不确定以前是否有人被这个问题所困扰,但这对我来说是一个巨大的痛苦 如何在android中为xml元素提供id 现在,我使用模式[activity/fragment name][element type][specific name]设置id。例如,如果我有一个EditText来保存一封在LoginActivity中使用的电子邮件,我将提供id“LoginEditTextEmail” 我面临的问题是,使用这种方法,id通常会以一个很长的id结束 如何设置id?最佳做法是什么?你把事情复杂化了。只

我不确定以前是否有人被这个问题所困扰,但这对我来说是一个巨大的痛苦

如何在android中为xml元素提供id

现在,我使用模式[activity/fragment name][element type][specific name]设置id。例如,如果我有一个EditText来保存一封在LoginActivity中使用的电子邮件,我将提供id“LoginEditTextEmail”

我面临的问题是,使用这种方法,id通常会以一个很长的id结束


如何设置id?最佳做法是什么?

你把事情复杂化了。只要用你能记住的方式来命名就行了。每个XML的id只需是唯一的(即,您可以有50种不同的布局,id为
my_edittext
),因为您只能通过单个视图层次结构通过id找到视图。

与命名任何内容一样,我倾向于使用尽可能短的名称来准确描述它。对于布局的id,只需确保每个id在布局中是唯一的(您可以在不同的布局中重用相同的id)。

描述性名称是理想的(与任何编程语言中任何变量的名称相同)

我认为你已经有了一个很好的系统,我会提供这些潜在的方法来减少你的ID的大小

[activity/fragment name]-我个人会放弃这一点,我倾向于为每个activity/fragment使用一个布局文件,这样就不会混淆视图将位于哪个活动中。此外,有时我会在多个活动中重复使用一些视图小部件,我会将它们保留为相同的ID,以便简化查找和交互它们的代码(即,可以复制/粘贴或放入活动的子类中)

[元素类型]-我使用3个字母的缩写来表示小部件类型:

  • Edt=编辑文本
  • Txt=文本视图
  • Lbl=文本视图,它是静态的,用于标记某些内容
  • Btn=按钮
  • Prg=进度条
  • Lyt=布局
  • 等等

[特定名称]-这里没有真正的改进,只要描述它的用途就行了。

删除片段、活动和类型,除非您在编码中对其进行了限定,因此:

boolean isLoggedIn=false

android:id=“@+id/is\u logged\u in”

正如在其他响应中提到的,XML提供了限定符,现在您必须决定是否需要一致性和/或进一步限定,以及是否适合。你真的需要资格认证吗?如果你不需要资格认证,那么你或其他人支持代码的难度会很大吗

那么
strings.xml

在id前面加上frag或活动限定符。例如:

已登录。

未登录。%

还有

我玩过:

未登录。

但还没有被说服。这实际上是一个分类问题,现在已经通过标记在其他学科中解决了。Java提供了点式名称空间和类型限定符,因此

com.example.android.app.profile.State.isLoggedIn

Android使用了类似于
R.string
:-)的东西,因此您有了Java和一些来自Android的附加名称空间。不要忘记,您可以有多个字符串资源文件,因此:

res/values/widget\u defaults.xml


可能包含一些默认值,例如
TextView
。真字符串和假字符串应该用复数来处理——尽管有点做作,但这个例子还是有帮助的。

啊,我明白了。感谢@kcopock,如果id只需要在单个视图层次结构中是唯一的,那么很明显可以忽略其他块;D@kcoppock,这是否会成为兄弟片段或嵌套片段的问题?可能是因为您正在从活动中查找片段视图,但如果您在片段中执行所有视图操作(通常应该这样做),则不会成为问题。谢谢@Tim,如果我可以留下活动/片段名称,那就最好了。我补充说,基本上是因为我不太了解id查找过程。你当然可以把它放在=),我个人倾向于不使用它。