【发布时间】:2021-06-08 08:18:38
【问题描述】:
是否可以有条件地将不同的布局文件附加到同一个视图绑定对象?
例如,我在片段中定义了一个通用视图绑定对象,如下所示:
private lateinit var binding: ViewBinding
然后在 onCreateView 中,我根据这样传递的值进行设置:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
// Inflate the layout for this fragment
if (savedInstanceState != null) {
settingsVisible = savedInstanceState.getBoolean(Constants.SETTIGNS_VISIBILITY_KEY, false)
}
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_style_horizontal, container,
false) as FragmentStyleHorizontalBinding
if(activity != null) {
val args = arguments
val isHorz = args?.getBoolean("isHorizontalLayout")
isHorz?.let {
if(!it){
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_style, container,
false) as FragmentStyleBinding
}
}
}
setupViews();
return binding.root
}
这可能吗?我无法以这种方式访问视图,并且我不想创建两个不同的视图绑定对象以避免重复代码两次用于具有点击侦听器的视图。
【问题讨论】:
-
我猜你可以做到。要访问特定视图,首先将绑定强制转换为该特定布局,然后访问子视图。
标签: android android-databinding android-viewbinding