android - 为什么我在 Android Studio 中使用数据时可以重命名 @BindingAdapter("app:popularityIcon") 而不会出错?
问题描述
代码 A 和代码 B 来自项目https://github.com/android/databinding-samples。
代码 B 显示基于图标fun popularityIcon(view: ImageView, popularity: Popularity)
并且运行良好。
我发现即使我重命名 @BindingAdapter("app:popularityIcon")
为 ,该项目仍然可以正常运行@BindingAdapter("myok:popularityIcon")
,就像代码 C 一样,为什么?
代码 A
object BindingAdapters {
@BindingAdapter("app:popularityIcon")
@JvmStatic fun popularityIcon(view: ImageView, popularity: Popularity) {
val color = getAssociatedColor(popularity, view.context)
ImageViewCompat.setImageTintList(view, ColorStateList.valueOf(color))
view.setImageDrawable(getDrawablePopularity(popularity, view.context))
}
...
}
代码 B
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginTop="24dp"
android:contentDescription="@string/profile_avatar_cd"
android:minHeight="48dp"
android:minWidth="48dp"
app:layout_constraintBottom_toTopOf="@+id/likes_label"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintVertical_chainStyle="packed"
app:popularityIcon="@{viewmodel.popularity}"/>
代码 C
object BindingAdapters {
@BindingAdapter("myok:popularityIcon")
@JvmStatic fun popularityIcon(view: ImageView, popularity: Popularity) {
val color = getAssociatedColor(popularity, view.context)
ImageViewCompat.setImageTintList(view, ColorStateList.valueOf(color))
view.setImageDrawable(getDrawablePopularity(popularity, view.context))
}
...
}
解决方案
Databinding ignores namespaces. So it removes app:
or myok:
or anything else. Also, if you put both adapters with the same name but different namespaces, you would get an error telling you that there are more than one adapter for popularityIcon
.
You can check the docs for more information.
Note: The Data Binding Library ignores custom namespaces for matching purposes.
推荐阅读
- azure-ad-b2c - 如何在 Azure B2C 中显示 REST 错误消息
- winapi - 如何在 VB6 中定义 POWERBROADCAST_SETTING?
- c++ - 在多个参数包上同时递归
- r - 映射列表并根据列 ID 提取数据框
- po - 当我运行 django-admin 编译消息时,我的 po 文件与翻译显示一些错误
- node.js - node.js 中的 POST 请求后如何输出变量?
- three.js - SSR 和 SSAO 不能一起使用
- python - 无法在snakemake中执行shell脚本
- sql - 从 oracle 过程返回 Json 字符串
- python - 使用threadid并行计算python时缺少结果