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

Why are the XML ID name conventions different from the Java one's?

我看了几个 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 Extensions

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

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

您可以在 Activity:

中像这样使用它
hello.setText("Hi!")

为此唯一需要做的就是将其添加到您要使用视图的 Kotlin 文件中:

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

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

apply plugin: 'kotlin-android-extensions'