FFImageLoading :加载到图像按钮中



在Xamarin.Android中,要使用FFImageLoad加载图像,必须使用ImageViewAsync而不是标准ImageView。

如果我想将图像加载到 ImageButton 中,我找不到可以使用的内容。没有找到"图像按钮异步"。

不知道这是否相关。我给了我的 svg 一个点击手势,让它像按钮一样工作。

首先在 xaml 中引用 FFImageLoad.Svg.Forms

namespace:FFImageLoading.Svg.Forms;assembly=FFImageLoading.Svg.Forms"

第二个添加带有点击手势的 svgImage

<ffimageloadingsvg:SvgCachedImage Source="YourImageSource" >
<ffimageloadingsvg:SvgCachedImage.GestureRecognizers>
<TapGestureRecognizer NumberOfTapsRequired="1" Command="{Binding YourCommand}"/>
</ffimageloadingsvg:SvgCachedImage.GestureRecognizers>
</ffimageloadingsvg:SvgCachedImage>

您将在视图模型的构造函数中调用它来初始化命令

YourCommand= new DelegateCommand(async () => await ExecuteYourCommandAsync());

创建绑定到 xaml 文件的属性

public ICommand YourCommand
{
get => yourCommand;
set => SetProperty(ref yourCommand, value);
}
private ICommand yourCommand;

await ExecuteYourCommandAsync 是您创建的方法。 在那里,您将输入您实际希望点击手势执行的操作的逻辑。

您也可以使用命令传递对象。 让 met 知道这是否有意义

AFAIK 没有用于 FFImageLoad 的特殊ImageButton,但您可以直接使用ImageViewAsync将其设置为android:clickable="true"并添加 click 事件。

正如这里所说,ImageButton只是一个默认具有非空背景的ImageView,而且,ImageButton.onSetAlpha() 方法总是返回 false,scaleType 设置为中心,并且它总是膨胀为可聚焦。因此,如果您需要该行为,可以添加它。

另一种方法是创建可以处理 FFImageLoading 图像加载的自定义ImageButton。为此,您可以从ImageViewAsync继承并添加前面段落中解释的行为。这样您就可以直接使用 FFImageLoading API,因为此自定义控件继承ImageViewAsync

取而代之的是,您还可以添加自定义加载逻辑,如此处所述,继承自ImageLoaderTask,并像ImageService.Instance.LoadImage(customImageTask)一样调用它

最后,另一种方法(但黑客和不执行)是创建一个ImageViewAsync来保存 FFImageLoad 的结果,并在成功回调中设置ImageButton中的可绘制对象:

var myImageButton = myView.FindViewById<ImageButton>(Resource.Id.my_image_button);
var myImageView = new ImageViewAsync(this); // this is the context
ImageService.Instance.LoadUrl(this.Source[position].LogoImagePath)
.Success(() => myImageButton.SetImageDrawable(myImageView.Drawable))
.Into(myImageView);

HIH,如果您需要任何帮助,请告诉我

最新更新