为什么XML ID的名称约定与Java的约定不同?

我看了几个Android项目。 为什么通常的做法是使用带有下划线的小写字母来表示XML ID?

在XML中:

@+id/name_text <!-- sometimes with "_view" suffix, sometimes without --> 

在Java中:

 TextView nameTextView = // ... 

我会建议以下ID: @+id/nameTextView

那实际上是我怎么做的。 缺点是什么?

特别是如果XML ID和字段名称遵循相同的模式,则数据绑定可能会更短(例如,使用ButterKnife)。 在这种情况下,我们可以忽略注释中的XML ID:

 @BindView TextView nameTextView; 

Java还没有这样的功能,但对于Kotlin: Kotlin Android扩展 。

如果您的视图是这样声明的(在activity_main.xml中 ):

  <TextView android:id="@+id/hello" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, MyActivity" /> 

你可以像这样在你的活动中使用它:

 hello.setText("Hi!") 

唯一要做的就是把这个添加到你想使用视图的Kotlin文件中:

 import kotlinx.android.synthetic.main.activity_main.* 

当然在您的项目本地build.gradle文件中添加依赖项:

 apply plugin: 'kotlin-android-extensions'