视图绑定作为Android Jetpack的一部分发布
文件:https://developer.android.com/topic/libraries/view-binding
我的问题是,如何使用视图绑定自定义视图。谷歌文档只展示了活动和片段。
我试过了,但是什么都没有显示。
LayoutInflater inflater = LayoutInflater.from(getContext());
然后,我用了这个,但同样,没有运气。
LayoutInflater inflater = (LayoutInflater)
getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
我想也许我没有针对正确的布局打气筒为我的看法,但不确定。
6条答案
按热度按时间2hh7jdfx1#
只需通知根,以及是否要附加到它
或
使用哪个inflate方法将取决于XML中的根布局类型。
5n0oy7gb2#
要使用视图绑定,您需要使用生成的绑定类,而不是
LayoutInflater
,例如,如果布局名称是result_profile.xml
,则您需要使用ResultProfileBinding
作为:1.自动生成类:
result_profile.xml
-〉ResultProfileBinding
(布局名称,附加Binding
)1.给固定装置充气
1.使用
addView
将视图添加到层次结构中,作为:注意:如果从
ConstraintLayout
(父类)扩展,则使用constraint sethjqgdpho3#
您可以立即初始化视图绑定属性
mcvgt66p4#
如果您尝试使用视图绑定与根视图,这是为我工作:
ogsagwnx5#
这是我能想到的最简单的Kotlin答案,它是一个自定义视图,只封装了一个TextView,并提供了一个
update(s:String)
函数来更新文本。我喜欢这个答案的两点是:
binding
是val
而不是var
,我尽量限制var
的数量。1.使用
also {}
作用域函数而不是init {}
子句,addView
与val binding
紧密关联,这使得View
的示例化感觉更具声明性。有人可能会说
addView()
实际上是一个副作用,应该放在init {}
节中,这样它就可以与binding
瓦尔的声明分开。我的观点正好相反--声明一个val
,然后将其提供给需要它的代码节,我不觉得这是一个副作用。iszxjhcz6#
您可以使用数据绑定工具