databinding设置View的layout_width和layout_height属性You must supply a layout_width attribute错误
来源:互联网 发布:怎么认证淘宝联盟权限 编辑:程序博客网 时间:2024/04/29 10:48
<TextView android:layout_width="@{@dimen/text_width}" android:layout_height="@{@dimen/text_height}" android:background="#e6e6e6" android:gravity="center" android:text="my girl!" />
dimens.xml文件的内容:
<dimen name="text_width">200dp</dimen> <dimen name="text_height">80dp</dimen>
运行之后,出现问题:
碰到这类错误,setter for attribute,基本就是属性没有对应的setter,需要我们使用@BindingAdapter等来弄一个方法,进行绑定。
或者方法的参数写错了。
这里由于View里面是不存在layout_widht和layout_height的属性的,我们知道这个只有其实是通过父控件的布局参数设置的。
所以需要设置@BindingAdapter。
@BindingAdapter("android:layout_width") public static void setLayoutWidth(View view, float width) { ViewGroup.LayoutParams params = view.getLayoutParams(); params.height = (int) width; view.setLayoutParams(params); } @BindingAdapter("android:layout_height") public static void setLayoutHeight(View view, float height) { ViewGroup.LayoutParams params = view.getLayoutParams(); params.height = (int) height; view.setLayoutParams(params); }
运行发生Binary XML file line#49: You must supply a layout_width attribute的错误:
其实从图中可以看到在DataBindingUtil.setContentView(this, R.layout.activity_main);初始化执行的时候,需要给对应TextView的属性layout_width和layout_height设置值。
而这里的setLayoutWidth()和setLayoutHeight()方法在初始化的时候并没有执行,所以TextView的这两个属性是没有值的。故报了上述的错误,解决方法也很简单,
给一个默认值就可以了。
<TextView android:layout_width="@{@dimen/text_width, default=@dimen/text_width}" android:layout_height="@{@dimen/text_height, default=@dimen/text_height}" android:background="#e6e6e6" android:gravity="center" android:text="my girl!" />
@BindingAdapter("android:layout_width")public static void setLayoutWidth(View view, float width) { ViewGroup.LayoutParams params = view.getLayoutParams(); params.height = (int) width; view.setLayoutParams(params);}@BindingAdapter("android:layout_height")public static void setLayoutHeight(View view, float height) { ViewGroup.LayoutParams params = view.getLayoutParams(); params.height = (int) height; view.setLayoutParams(params);}
这样子就可以了。
参考文章:
http://stackoverflow.com/questions/35295120/android-data-binding-layout-width-and-layout-height
http://stackoverflow.com/questions/34769981/android-databinding-layout-width-you-must-supply-a-layout-width-attribut
0 0
- databinding设置View的layout_width和layout_height属性You must supply a layout_width attribute错误
- You must supply a layout_width layout_width attribute 错误
- You must supply a layout_width attribute.解决办法
- You must supply a layout_width attribute. 错误解决
- You must supply a layout_width attribute. 错误解决
- You must supply a layout_width layout_width attribute 解决办法
- Android -Logcat:you must supply a layout_width attribute
- 错误:Binary XML file line #23: You must supply a layout_width attribute.
- Log中出现You must supply a layout_width attribute的解决方法
- You must supply a layout_width attr
- You must supply a layout_height attribute
- Binary XML file line #11: You must supply a layout_width attribute
- 【layout】Binary XML file line #23: You must supply a layout_width attribute.
- 即使这么忙,还是要记录下这个AndroidStudio的坑:Binary XML file line #20: You must supply a layout_width attribute.
- Android错误之java.lang.RuntimeException: Binary XML file line #160: You must supply a layout_width attr
- ListView item布局layout_width和layout_height属性
- layout_weight和layout_width/layout_height的结合
- 解决Android的DL插件三星手机报错Binary XML file line #31:You must supply a layout_height attribute.
- Webstrom---使用技巧
- LeetCode98 Validate Binary Search Tree
- HDU 2183 奇数阶魔方(II) (构造幻方)
- 富文本编辑器ueditor如何限制图片拉升的宽度
- PCA数学原理与简单人脸识别
- databinding设置View的layout_width和layout_height属性You must supply a layout_width attribute错误
- PowerDesigner逆向DB2数据库
- 面试题——判断一棵树是否是平衡二叉树
- linux性能监控——CPU、Memory、IO、Network
- 系统集成项目管理工程师-项目立项
- Xcode8真机调试报错:ios Code signing is required for product type 'Application' in SDK 'iOS 10.0'
- 解决安卓CPU使用率过高问题
- C语言中memset函数详解
- Timer 的 schedule()方法