我不确定之前是否有人对这个问题进行过抨击,但对我来说这是一个很大的痛苦。
你如何给android中的xml元素一个id?
现在,我使用模式 [活动/片段名称] [元素类型] [特定名称] 设置ID。例如,如果我有一个EditText来保存在LoginActivity中使用的电子邮件,我将给出id“LoginEditTextEmail”。
我面临的问题是,通过这种方法,id通常会在很长的时间内结束。
你如何设置ID?什么是最佳做法?
答案 0 :(得分:12)
描述性名称是理想的(与任何编程语言中任何变量的名称相同)。
我认为你已经有了一个很好的系统我会提供这些减少ID大小的潜在方法
[活动/片段名称] - 我个人会放弃这个,我倾向于每个活动/片段使用一个布局文件,所以不会混淆视图的意图。还有一些时候我在多个活动中重复使用一些View小部件,我将使用相同的ID留下它们,以便简化查找和交互它们的代码(即它可以复制/粘贴或放入Activity的子类中) )
[元素类型] - 我使用3个字母的简写为小部件类型:
[具体名称] - 这里没有真正的改进,只要必须描述它的用途。
答案 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
。真假字符串应由复数形式处理 - 但这个例子有希望有所帮助,尽管有点人为。