为什么 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'
我看了几个 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'