如何将视图大小绑定到参数

时间:2017-10-24 08:53:08

标签: android android-databinding

我正在尝试将View宽度绑定到像这样的参数

android:layout_width='@{String.valueOf((int)item.parameter)+"dp"}'

可以是

之类的东西
android:layout_width='@{"156dp"}'

结果是

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Cannot find the setter for attribute 'android:layout_width' with parameter type java.lang.String on android.view.View.

那么如何正确地将item参数绑定到View宽度?

1 个答案:

答案 0 :(得分:0)

我相信在Java代码中,layout_width是一个整数属性,期望值以像素为单位。您在XML中提供的单位后缀用于在将值传递给layout_width之前将xml中的值从dp转换为像素。我认为你绑定的属性应该是整数属性,它提供像素值。如果item.parameter是dp单位所需的整数值,则可以对item.bindingParameter执行类似的操作:

    Configuration cfg = getResources().getConfiguration();
    return item.parameter * cfg.densityDpi / DisplayMetrics.DENSITY_DEFAULT;