将内存中的位图数据绑定到 ImageView
Databinding an in-memory Bitmap to an ImageView
我在内存中有一个位图(通过专有 TCP/IP 协议栈从服务器应用程序下载),我想将其绑定到 ImageView。但是,我可以使用 setImageBitmap 手动绑定图像;如果我使用数据绑定库绑定其他控件,图像不显示。如何使用数据绑定库绑定到包含 Bitmap 对象的 属性?
你应该可以用 @BindingAdapter
来做到这一点,比如:
@BindingAdapter("bind:imageBitmap")
public static void loadImage(ImageView iv, Bitmap bitmap) {
iv.setImageBitmap(bitmap);
}
然后,在您的布局中,您的 ImageView
将具有 bind:imageBitmap="@{...}"
,其中 ...
将是 returns 您的 Bitmap
的绑定表达式。
您可以使用 android.databinding.adapters.ImageViewBindingAdapter
,它包含在数据绑定库中。
在您的视图模型或绑定到您的视图的任何内容中,实现如下方法:
@Bindable
public Drawable getDrawable() {
return new BitmapDrawable(context.getResources(), bitmap);
}
然后在您的 ImageView
中添加如下内容:
android:src="@{viewModel.drawable}"
显然,viewModel
变量必须已在您的布局中声明。
之所以有效,是因为 ImageViewBindingAdapter
有这个方法:
@BindingAdapter("android:src")
public static void setImageDrawable(ImageView view, Drawable drawable) {
view.setImageDrawable(drawable);
}
我在内存中有一个位图(通过专有 TCP/IP 协议栈从服务器应用程序下载),我想将其绑定到 ImageView。但是,我可以使用 setImageBitmap 手动绑定图像;如果我使用数据绑定库绑定其他控件,图像不显示。如何使用数据绑定库绑定到包含 Bitmap 对象的 属性?
你应该可以用 @BindingAdapter
来做到这一点,比如:
@BindingAdapter("bind:imageBitmap")
public static void loadImage(ImageView iv, Bitmap bitmap) {
iv.setImageBitmap(bitmap);
}
然后,在您的布局中,您的 ImageView
将具有 bind:imageBitmap="@{...}"
,其中 ...
将是 returns 您的 Bitmap
的绑定表达式。
您可以使用 android.databinding.adapters.ImageViewBindingAdapter
,它包含在数据绑定库中。
在您的视图模型或绑定到您的视图的任何内容中,实现如下方法:
@Bindable
public Drawable getDrawable() {
return new BitmapDrawable(context.getResources(), bitmap);
}
然后在您的 ImageView
中添加如下内容:
android:src="@{viewModel.drawable}"
显然,viewModel
变量必须已在您的布局中声明。
之所以有效,是因为 ImageViewBindingAdapter
有这个方法:
@BindingAdapter("android:src")
public static void setImageDrawable(ImageView view, Drawable drawable) {
view.setImageDrawable(drawable);
}