从 Android Studio 3.6 开始,视图绑定能够通过生成绑定对象来替代 findViewById,从而可以帮您简化代码、移除 bug,并且从 findViewById 的模版代码中解脱出来。
-
在 build.gradle 中就可以方便快捷地开启视图绑定且无须额外引入依赖库
-
视图绑定会为 Module 中的每一个布局文件生成一个绑定对象
(activity_awesome.xml → ActivityAwesomeBinding.java, activity_main.xml-->ActivityMainBinding.java)
-
布局文件中每一个带有 id 的视图都会在绑定对象中有一个对应的属性,这个属性将拥有正确的类型,并且空安全
-
视图绑定完美支持 Java 和 Kotlin 编程语言
代码中如何使用。首页android studio的开发版本要3.6.0以上
1.在module的build.gradle文件中。加上一句话。加在文件的android{}里面就行
viewBinding {
enabled = true
}
// 需要 Android Gradle Plugin 3.6.0
android {
viewBinding {
enabled = true
}
}
在 Android Studio 4.0 中,viewBinding 变成属性被整合到了 buildFeatures 选项中,所以配置要改成:
// Android Studio 4.0
android {
buildFeatures {
viewBinding = true
}
}
2. 正常些xml布局文件。要想获取布局文件的view。则每个view都要有id(android:id="@+id/btn")。 注意点。如果是include的view。也要起id,才能找到。
3. 在 Activity 中使用视图绑定
private ActivityMainBinding mBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = getLayoutInflater();
//由于次activity对应布局文件是activity_main.xml所以会自动绑定ActivityMainBinding类调用inflate方法则可以得到此对象
mBinding = ActivityMainBinding.inflate(inflater);
setContentView(mBinding.getRoot());//每个对象都有一个getRoot方法,就是得到这个view
mBinding.btn.setText("glide");//布局文件中有个按钮的id为btn,直接调用.btn可以得到button对象。
mBinding.btn.setOnClickListener(this);
}
使用视图绑定时,无须再调用 findViewById 方法,只要直接调用绑定对象中的对应属性即可。
布局的根视图(无论有没有 id)都会自动生成一个名为 root 的属性。在 Activity 的 onCreate 方法中,要将 root 传入 setContentView 方法,从而让 Activity 可以使用绑定对象中的布局。
注意:
一个常见的错误用法是: 在开启了视图绑定的同时,依然在 setContentView(...) 中传入布局的 id 而不是绑定对象。这将造成同一布局被填充两次,同时监听器也会被添加到错误的布局对象中。
解决方案: 在 Activity 中使用视图绑定时,一定要将绑定对象的 root 属性传入 setContentView() 方法中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)