注意:您需要至少使用 Android Studio 3.6 Canary 11 才能使用 View Binding
要将 ViewBinding
添加到我们的应用程序中,我们需要将以下内容添加到 build.gradle
文件中:
android {
…
viewBinding {
enabled = true
}
}
注:Android Studio 4.0 以上 ViewBinding 启用方式变更如下
android {
...
buildFeatures {
viewBinding true
}
}
接下来新建一个布局文件activity_view_binding,内容如下
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="111" />
<android.support.v7.widget.AppCompatImageView
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/text"
app:layout_constraintWidth_percent="0.4" />
</android.support.constraint.ConstraintLayout>
然后在Activity等需要使用布局的类中进行ViewBinding的初始化及使用,如下
public class ViewBindingActivity extends AppCompatActivity {
private ActivityViewBindingBinding viewBinding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewBinding = ActivityViewBindingBinding.inflate(LayoutInflater.from(this));
setContentView(viewBinding.getRoot());
viewBinding.text.setText("view binding");
viewBinding.image.setImageResource(R.color.black);
}
}
ViewBinding 不用再手动进行类型转换,也避免了空指针错误。如果不想生成 ViewBinding,可以在布局的根视图上使用tools:viewBindingIgnore="true"
原文链接:https://blog.csdn.net/jklwan/java/article/details/102767871