DataBinding中能否使用主题属性作为数据绑定的默认值?
Android DataBinding:主题属性作为默认值的可行性及实现方式
可以使用主题属性作为DataBinding的默认值,但需要调整语法格式,以下是具体实现:
正确代码示例
你需要将默认值的前缀从?attr/改为@?attr/,修改后的代码如下:
android:background="@{toolbarColors.backgroundColor, default=@?attr/color_primary}"
语法说明
在DataBinding的默认值规则中,引用主题属性必须使用@?attr/属性名的格式,而非直接使用?attr/。这种写法能让DataBinding编译时正确识别主题属性,当绑定的toolbarColors.backgroundColor为null或未赋值时,会自动应用主题中定义的color_primary属性值。
验证前提
确保你的应用主题中已正确定义目标属性,例如在styles.xml中:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar"> <item name="color_primary">@color/custom_primary_color</item> </style>
内容的提问来源于stack exchange,提问作者Filipkowicz
相关产品推荐
相关产品推荐

