如何覆盖按钮属性

时间:2016-01-30 04:37:25

标签: android xml data-binding

我应该可以在Android dataBinding中使用@BindingAdapter,这样我就可以覆盖某个属性。我可以用cusutom属性来做,但是有一个android内置属性它是如何完成的?

到目前为止我所拥有的: 在我的viewModel中,我有一个用@BindingAdapter注释的方法,如下所示:

 @BindingAdapter({"android:text"})
    public static void setText(Button view,boolean language) {//i need to pass one more variable in here for area code , its just a integer, but how ?

        if("french".equals(language))//i want to test if french && area code
           view.setText("si vous play");
   else if ("English".equals(language)) //i want to test if french && area code
        view.setText("please");

    }

但我有一些问题。让我们看看xml:

 <Button
        android:id="@+id/mybutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@{`french,844`}"/>

请参阅我的问题,我想将多个参数传递给dataBinding。但是怎么样?我是否必须制作一个POJO对象并将其传入?即使我这样做我如何从xml设置对象?

所以如果有人能告诉我以下情况我会没事的: 1.如何将多个值传递给bindingAdapter和 2.如何在任何视图中覆盖内置的android属性。

1 个答案:

答案 0 :(得分:1)

如果要在BindingAdapter中设置两个不同的值,则应使用两个不同的属性:

<Button
    android:id="@+id/mybutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{`french`}"
    app:areaCode="@{`844`}"/>

然后在BindingAdapter中有两个不同的属性:

@BindingAdapter({"android:text", "areaCode"})
public static void setText(Button view, String language, String areaCode) {
    ...
}

但是设置一个不同的“app:language”可能会更好,因为开发人员会更清楚。