Kar*_*rma 1 android kotlin kotlin-android-extensions android-databinding android-viewbinding
由于 Kotlin Synthetics 已被弃用,我们正在迁移到 ViewBinding。
我已经尝试了很多关于 ViewStub、ViewBinding 的谷歌搜索和阅读文档,并且已经为 Fragments 活动实现了 ViewBinding,包括、合并标签,但是我找不到任何使用 ViewBinding 来膨胀 ViewStub 的方法。
<ViewStub
android:id="@+id/viewStubLayout"
tools:layout="@layout/view_demo_layout" />
Run Code Online (Sandbox Code Playgroud)
请忽略宽度和高度属性,它们是作为样式添加的,并已从此代码段中删除。
您能否分享如何使用 ViewBinding 动态地使用另一个 xml 布局来扩展此视图。
即使在 ViewStub.java 文件中,类级别的注释也指出,
执行布局资源膨胀的首选方法如下:
ViewStub 存根 = findViewById(R.id.stub); 查看充气 = stub.inflate();
这是否意味着,我必须继续使用 R.layout.xxx_xx 来膨胀视图存根。我不能使用该特定 xml 文件的绑定对象来扩展视图吗?
我写了关于ViewBinding当它处于测试阶段。除了ViewStub. ViewStub案例与<Include>我链接文章中的案例非常相似。您需要做的是调用布局的bind()函数ViewStub并传递您添加的根ViewStub。记得打bind()进来setOnInflateListener。
class MainFragment : Fragment() {
private var binding: FragmentMainBinding by autoCleared()
private var stubBinding: StubBinding by autoCleared()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = FragmentMainBinding.inflate(inflater, container, false)
binding.stub.setOnInflateListener { _, inflateId -> stubBinding = StubBinding.bind(inflateId) }
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.stub.inflate()
stubBinding.tvTestMe.text = "Hurray"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1729 次 |
| 最近记录: |