我有两个布局xml A 和 B
A xml中的线性布局,ID为'布局'
现在我想使用layout.addView()
如何使用databinding
答案 0 :(得分:8)
我认为这不是最佳做法,但我在databinding
动态添加视图的方式如下。
在布局A
中,我有一个FrameLayout
,如下所示:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
bind:createView="@{viewModel.dynamicViews}">
在我的viewModel
课程中,我有一个带BindingAdapter
注释的静态方法,
@BindingAdapter("bind:createView")
public static void createImproveView(FrameLayout layout, LinearLayout replacement) {
layout.removeAllViews();
layout.addView(replacement);
}
我在这里有替换布局:
public LinearLayout getDynamicViews() {
LinearLayout layout = new LinearLayout(mContext);
// dynamically add views here. This could be your layout B.
return layout;
}
我无法找到任何其他解决方案,这对我来说很好。请给我任何评论,我愿意学习更好的解决方案!
答案 1 :(得分:0)
如果你想使用布局xml做同样的事情。像这样使用include控件:
<include layout="@layout/header_logo_lyt" //Name of xml you want to include/>
答案 2 :(得分:0)
addView(databinding.getRoot())
您可以看到getRoot()
返回View
个实例,因此您可以通过此方法addView
。
此数据绑定是您要添加的视图的数据绑定实例。