Daw*_*yży 6 android android-layout android-databinding
我正在尝试在数据绑定中使用算术运算:
<Space
android:layout_width="match_parent"
android:layout_height="@{2 * @dimen/button_min_height}" />
Run Code Online (Sandbox Code Playgroud)
不幸的是我得到了:
Error:(47, 47) must be able to find a common parent for int and float
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Rav*_*avi 14
因为你正在进行int * float操作,2是int价值并且@dimen/button_min_height会给你float价值.但是只android:layout_height接受float价值.
您可以像这样创建自定义绑定方法:
public class Bindings {
@BindingAdapter("android:layout_height")
public static void setLayoutHeight(View view, float height) {
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.height = (int) height;
view.setLayoutParams(layoutParams);
}
}
Run Code Online (Sandbox Code Playgroud)
并在您的xml代码中
android:layout_height="@{(float)2 * @dimen/activity_vertical_margin}"
Run Code Online (Sandbox Code Playgroud)
将2转换为float所以它不会给你任何投射错误.
从上面的代码中,您将得到RunTimeException : You must supply
a layout_height attribute.,为了解决该错误,提供default价值layout_height
android:layout_height="@{(float)2 * @dimen/activity_vertical_margin, default=wrap_content}"
Run Code Online (Sandbox Code Playgroud)
请参阅本官方文档的default属性的概念,或者您也可以参考这个答案,以及
| 归档时间: |
|
| 查看次数: |
3292 次 |
| 最近记录: |