asa*_*azi 56 android android-layout android-studio android-databinding
我跟着数据绑定文件自定义绑定适配器用于图像加载从官方Android开发者网站: http://developer.android.com/tools/data-binding/guide.html
成功编译代码后,我得到一个警告:
Warning:Application namespace for attribute bind:imageUrl will be ignored.
Run Code Online (Sandbox Code Playgroud)
我的守则如下:
@BindingAdapter({"bind:imageUrl"})
public static void loadImage(final ImageView imageView, String url) {
imageView.setImageResource(R.drawable.ic_launcher);
AppController.getUniversalImageLoaderInstance().displayImage(url, imageView);
}
Run Code Online (Sandbox Code Playgroud)
为什么会产生此警告?
Lor*_*rte 98
我相信在BindingAdapter
注释中真正忽略了命名空间.如果使用任何名称空间前缀,则会发出警告,无论它是否与布局中使用的名称前缀匹配.如果省略命名空间,如下所示:
@BindingAdapter({"imageUrl"})
Run Code Online (Sandbox Code Playgroud)
......警告不会发生.
我怀疑存在警告,提醒我们在将字符串用作注释实现中的键之前,命名空间被剥离.这使得当你考虑感布局可以自由申报任何他们想要的命名空间,例如app:
或bind:
或foo:
和注释,需要在所有的情况下工作.
Khe*_*raj 11
实际上仍然有一些教程为BindingAdapter
注释添加前缀。
@BindingAdapter({"imageUrl"})
不带任何前缀使用。<ImageView
imageUrl="@{url}"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
你不会得到使用时警告android:
中的前缀BindingAdapter
。因为这是被鼓励的。我会建议使用@BindingAdapter("android:src")
而不是创建一个新属性。
@BindingAdapter("android:src")
public static void setImageDrawable(ImageView view, Drawable drawable) {
view.setImageDrawable(drawable);
}
Run Code Online (Sandbox Code Playgroud)
和
@BindingAdapter("android:src")
public static void setImageFromUrl(ImageView view, String url) {
// load image by glide, piccaso, that you use.
}
Run Code Online (Sandbox Code Playgroud)
仅在需要时创建新属性。
归档时间: |
|
查看次数: |
16332 次 |
最近记录: |