文章目录
前言
随着kotlin-android-extensions 插件的废弃,我们不再被推荐使用id号的方式去访问组件。但是Google官方推荐我们使用ViewBinding的方式来实现类似的功能,本文简单记录一下ViewBinding在Activity中的使用步骤,以便将来查阅
提示:以下是本篇文章正文内容,下面案例可供参考
一、ViewBinding是什么?
可以简单理解为一个让你避免写findViewById的方法
二、使用步骤
1.新建一个ViewBindingTest项目
在默认的布局文件中加入组件ID
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
2.配置Build.gradle文件
在项目工程模块(Module)的build.gradle文件中加入以下配置(Android Studio 需要升级到3.6版本以上)
android {
...
buildFeatures {
viewBinding true
}
}
启用ViewBinding功能后,Android Studio 会为每一个布局文件生成一个对应的Binding类,这个类以驼峰式命名。activity_main.xml 对应的就是ActivityMainBinding
3.在Activity中使用ViewBingding
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)//inflate方法用于加载activity_main.xml布局
setContentView(binding.root)//binding.root获取activity_main.xml中的根元素
binding.textView.text ="ViewBinding"
}
}
4.部分页面不启用ViewBinding
在实际开发过程中,并不是所有页面都会用到ViewBinding,这个时候我们可以在布局页面的根元素下加入声明:tools:viewBindingIgnore=“true”。
<androidx.constraintlayout.widget.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"
tools:viewBindingIgnore="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">