Android数据绑定:如何在布局预览中显示变量值?
解决Android Studio布局预览显示数据绑定marginLeft的问题
要让布局预览窗口显示数据绑定设置的marginLeft值,核心是给绑定的变量或表达式设置预览默认值——因为布局预览是静态渲染,不会执行Activity里的变量赋值代码。
有两种可行的方式:
方式一:给变量添加default属性
直接在<variable>标签里通过default指定预览用的默认值,修改后的布局代码如下:
<data> <variable name="doorLeft" type="Integer" default="300" /> </data> <!-- ... --> <ImageView android:id="@+id/castle_main_door" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@{doorLeft}" android:src="@drawable/castle_main_door2" />
方式二:用Elvis运算符设置表达式默认值
在绑定表达式里使用Elvis运算符(??),当变量未被赋值时(预览场景)自动使用默认值:
<ImageView android:id="@+id/castle_main_door" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@{doorLeft ?? 300}" android:src="@drawable/castle_main_door2" />
这样修改后,布局预览窗口就会显示marginLeft=300的效果,同时不影响运行时Activity中设置的变量值。
内容的提问来源于stack exchange,提问作者user21597761
相关产品推荐
相关产品推荐

