Android 中的数据绑定目前似乎支持以下参考资源(根据数据绑定指南):@array
, @color
, @int
, @dimen
, @string
... 这将在静态@BindingAdapter
方法中将引用值作为参数提供。
例如:
布局/web_view.xml
<WebView
app:htmlTextColor="@{@color/colorText}"
android:layout_width="match_parent"
android:layout_height="match_parent" />
绑定.java
@BindingAdapter({"bind:htmlTextColor"})
public static void setHtml(WebView webView, int textColor) {
// binding logic
}
但是对于主题和样式,我更经常使用属性资源,例如,?android:attr/textColorPrimary
而不是@color
引用。对于这种情况,绑定"@{}"
语法会是什么样子?目前这就是我让它工作的方式,但也许有更好的方法?
布局/web_view.xml
<WebView
app:htmlTextColor="@{android.R.attr.textColorPrimary}"
android:layout_width="match_parent"
android:layout_height="match_parent" />
绑定.java
@BindingAdapter({"bind:htmlTextColor"})
public static void setHtml(WebView webView, int textColorAttr) {
// binding logic
}