我正在尝试将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宽度?
答案 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;