我有两个布局 xml A B

中的线性布局 id 为“layout”的 xml

现在我想使用 layout.addView() 在布局中添加 B

我如何使用 databinding 做到这一点

最佳答案

我不认为这是最佳实践,但这是我使用 databinding 动态添加 View 的方法。

在布局 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;
}

我找不到任何其他解决方案,这对我来说很好用。请给我任何意见,我愿意学习更好的解决方案!

关于Android DataBinding 动态 addView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31446779/

10-08 23:53