Java 是否有可能用可观察到的数据绑定边距?

Java 是否有可能用可观察到的数据绑定边距?,java,android,android-databinding,Java,Android,Android Databinding,我想在我的xml代码中数据绑定一个布局_marginBottom。并用一个可观察变量将这个绑定链接到代码中 我试图将数据绑定放在我的视图中,如下所示: android:layout_marginBottom="@{viewModel.marginBottom}" 然后在我的代码中: public final ObservableFloat marginBottom = new ObservableFloat(0); 但这不会编译,错误消息是: Error:(12, 36) Cannot fi

我想在我的xml代码中数据绑定一个布局_marginBottom。并用一个可观察变量将这个绑定链接到代码中

我试图将数据绑定放在我的视图中,如下所示:

android:layout_marginBottom="@{viewModel.marginBottom}"
然后在我的代码中:

public final ObservableFloat marginBottom = new ObservableFloat(0);
但这不会编译,错误消息是:

Error:(12, 36) Cannot find the setter for attribute 'android:layout_marginBottom' with parameter type float on com.example.customView. 

我也尝试了ObservaleInt,但类似的错误消息。也许我必须以某种方式将int转换为dp?这可能吗?如何实现这一点?

您不应该通过数据绑定来控制布局。但是如果您真的想这样做,那么为页边空白编写一个
@BindingAdapter
就可以了,它可以修改
视图的
布局参数

@BindingAdapter("layout_marginBottom")
public static void setMarginBottom(View view, int margin) {
    ViewGroup.LayoutParams params = view.getLayoutParams();
    if (params instanceof ViewGroup.MarginLayoutParams) {
        ViewGroup.MarginLayoutParams margins = (ViewGroup.MarginLayoutParams) params;
        margins.bottomMargin = margin;
        view.requestLayout();
    }
}