gpt4 book ai didi

android - 如何在 Android 中使用 ViewBinding 为 ViewStub 充气

转载 作者:行者123 更新时间:2023-12-04 23:47:05 34 4
gpt4 key购买 nike

由于不推荐使用 Kotlin Synthetics,我们正在迁移到 ViewBinding。
我已经尝试了很多关于 ViewStub、ViewBinding 的谷歌搜索和阅读文档,并为 Fragments Activity 、包含、合并标签实现了 ViewBinding,但是我找不到任何方法来使用 ViewBinding 膨胀 ViewStub。

 <ViewStub
android:id="@+id/viewStubLayout"
tools:layout="@layout/view_demo_layout" />
请忽略宽度和高度属性,因为它们是作为样式添加的,并已从该 fragment 中删除。
您能否分享如何使用 ViewBinding 动态地使用另一个 xml 布局来扩展此 View 。
即使在 ViewStub.java 文件中,类级别的注释也表明,

The preferred way to perform the inflation of the layout resource isthe following:

ViewStub stub = findViewById(R.id.stub);View inflated = stub.inflate(); 


这是否意味着,我必须继续使用 R.layout.xxx_xx 来为viewstub 充气。我不能使用该特定 xml 文件的绑定(bind)对象来扩展 View 吗?

最佳答案

I wrote关于 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"
}
}

关于android - 如何在 Android 中使用 ViewBinding 为 ViewStub 充气,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66703789/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com