android - ViewBinding - 如何获得包含布局的绑定?
问题描述
在使用 ViewBinding 时,我遇到了一些没有记录的案例。
第一:如何获得包含的通用视图布局部分的绑定,主绑定只看到主布局中的项目?
第二:如何获得包含的合并类型布局部分的绑定,再次主绑定只看到主布局中的项目?
解决方案
的情况下:
- 包含通用布局(不是合并节点),我们需要为包含的部分分配 ID,这样在绑定中我们将可以访问包含的子部分
<include
android:id="@+id/your_id"
layout="@layout/some_layout" />
这种方式在您的活动代码中:
private lateinit var exampleBinding: ActivityExampleBinding //activity_example.xml layout
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
exampleBinding = ActivityExampleBinding.inflate(layoutInflater)
setContentView(exampleBinding.root)
//we will be able to access included layouts view like this
val includedView: View = exampleBinding.yourId.idOfIncludedView
//[...]
}
- 在外部布局中包含合并块。我们无法为其添加 ID,因为合并块不是视图。假设我们有这样的永恒合并布局(merge_layout.xm):
<?xml version="1.0" encoding="utf-8"?>
<merge 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:showIn="@layout/activity_example">
<TextView
android:id="@+id/some_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World" />
</merge>
要正确绑定这样的合并布局,我们需要:
在您的活动代码中:
private lateinit var exampleBinding: ActivityExampleBinding //activity_example.xml layout
private lateinit var mergeBinding: MergeLayoutBinding //merge_layout.xml layout
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
exampleBinding = ActivityExampleBinding.inflate(layoutInflater)
//we need to bind the root layout with our binder for external layout
mergeBinding = MergeLayoutBinding.bind(exampleBinding.root)
setContentView(exampleBinding.root)
//we will be able to access included in merge layout views like this
val mergedView: View = mergeBinding.someView
//[...]
}
推荐阅读
- python - 在 Python Ubuntu 上更改目录时出错
- ios - WKWebview 密码 API 自动填充
- powershell - PowerShell 模块:如何强制执行最低 .NET Framework 版本?
- javascript - 如何使用 THREE.js 加载 SVGLoader
- html - CSS:在多个对象周围创建边框
- python - Cython - 有效过滤类型化的内存视图
- c - 数组布尔值如何将 Char 条目与真或假相关联?
- javascript - 不能将数组中的句子分成它们自己的索引或变量吗?从 Sharepoint 列表中提取数据
- css - -ms-grid-columns 正在堆叠列
- javascript - [a,b].reduce(f,x) 代码到 [a,b].reduce(f) 使用基于传感器 /CPS 的功能引用?