免费资源网 – https://freexyz.cn/
目录
- kotlin中使用ViewBinding绑定控件
 - 什么是ViewBinding?
 - 配置ViewBinding
 - 使用ViewBinding
 
kotlin中使用ViewBinding绑定控件
什么是ViewBinding?
- View Binding是Android Studio 3.6推出的新特性,主要用于减少findViewById的冗余代码,但内部实现还是通过使用findViewById。通过ViewBinding,可以更轻松地编写可与视图交互的代码。在模块中启用ViewBinding之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类,绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。
 - 在之前的项目中我们可以通过kotlin-android-extensions插件来绑定View控件的,很遗憾在Android Studio 4.1之后kotlin-android-extensions插件已被废弃,现在推荐使用ViewBinding来进行替代。
 - 注意:视图绑定在 Android Studio 3.6 Canary 11 及更高版本中可用
 
配置ViewBinding
- 在app级别的build.gradle中的android闭包中添加buildFeatures,设置viewBinding 为 true
 
android {
    namespace xxx
    compileSdkVersion versions.compileSdk
    defaultConfig {
        ...
    }
    compileOptions {
        ...
    }
    buildFeatures{
        viewBinding true
    }
}
配置完成后 Sync一下gradle,编译项目后会在build→generated→data_binding_base_class_source_out文件中生成相应的类。Binding类的命名规则是将布局文件按驼峰方式重命名后,再加上Binding作为结尾。例如,我们activity_main.xml布局对应的Binding类就是ActivityMainBinding。

如果有些布局文件你不希望为它生成对应的Binding类,可以在该布局文件的根元素位置加入tools:viewBindingIgnore="true"

使用ViewBinding
在Activity使用viewbing,如下代码所示。注意:我们需要先Binding类的getRoot方法获取到对应布局文件的根元素,然后将其传入到setContentView方法中,否则设置监听事件会无法生效
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //初始化ViewBinding控件
        var myBinding = ActivityMainBinding.inflate(layoutInflater)
        //把根元素的对象作为参数传入到setContentView()方法中
        setContentView(myBinding.root)
        //botton是activity_main.xml中的一个按钮id
        myBinding.botton.setOnClickListener {
			//Code Logic
        }
    }
}
免费资源网 – https://freexyz.cn/
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
		
评论(0)