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

时间:2012-07-20 14:12:05

标签: android xml

我不确定之前是否有人对这个问题进行过抨击,但对我来说这是一个很大的痛苦。

你如何给android中的xml元素一个id?

现在,我使用模式 [活动/片段名称] [元素类型] [特定名称] 设置ID。例如,如果我有一个EditText来保存在LoginActivity中使用的电子邮件,我将给出id“LoginEditTextEmail”。

我面临的问题是,通过这种方法,id通常会在很长的时间内结束。

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

4 个答案:

答案 0 :(得分:12)

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

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

[活动/片段名称] - 我个人会放弃这个,我倾向于每个活动/片段使用一个布局文件,所以不会混淆视图的意图。还有一些时候我在多个活动中重复使用一些View小部件,我将使用相同的ID留下它们,以便简化查找和交互它们的代码(即它可以复制/粘贴或放入Activity的子类中) )

[元素类型] - 我使用3个字母的简写为小部件类型:

  • Edt = EditText
  • Txt = TextView
  • Lbl = TextView是静态的标记内容
  • Btn = Button
  • Prg = ProgressBar
  • Lyt =布局
  • 等...

[具体名称] - 这里没有真正的改进,只要必须描述它的用途。

答案 1 :(得分:5)

你的事情太复杂了。只要以令人难忘的方式命名即可。 ID只需要对每个XML唯一(即,您可以有50个不同的布局,其id为my_edittext),因为您只能通过单个视图层次结构查找其ID。

答案 2 :(得分:1)

就像命名任何东西一样,我倾向于使用可能准确描述它的最短名称。对于布局的ID,只需确保每个id在布局中都是唯一的(您可以在不同的布局中重复使用相同的ID)。

答案 3 :(得分:0)

删除片段,活动和类型除非您在编码中限定这些,否则:

boolean isLoggedIn = false;

android:id="@+id/is_logged_in"

正如其他回复中所提到的,XML提供了限定符,现在您必须决定是否需要一致性和/或进一步的限定以及是否适合。你是否真的需要获得资格,如果你不支持你或其他任何人要更难的代码?

那么strings.xml呢?

使用frag或activity限定符为id添加前缀。所以,例如:

<string name="profile_is_logged_in_true">Logged in.</string>

<string name="profile_is_logged_in_false">Not logged in.%</string>

也...

<plurals name="plural_is_logged_in_duration">...

<string name="profile_isloggedin_false">Not logged in.</string>

但尚未确信。这实际上是一个分类问题,现在已经通过标记在其他学科中解决了。 Java提供了虚线命名空间和类型限定符,所以

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

Android使用像R.string这样的东西:-)所以你有Java加上一些来自Android的额外命名空间。不要忘记你可以拥有多个字符串资源文件,所以也许:

res/values/widget_defaults.xml

可以包含一些默认值,例如TextView。真假字符串应由复数形式处理 - 但这个例子有希望有所帮助,尽管有点人为。