Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin FFImageLoading:加载到ImageButton中_Xamarin_Xamarin.android_Ffimageloading - Fatal编程技术网

Xamarin FFImageLoading:加载到ImageButton中

Xamarin FFImageLoading:加载到ImageButton中,xamarin,xamarin.android,ffimageloading,Xamarin,Xamarin.android,Ffimageloading,在Xamarin.Android中,要使用FFImageLoading加载图像,必须使用ImageViewAsync而不是标准ImageView 如果我想将图像加载到ImageButton中,我找不到可以使用的内容。未找到“ImageButtonAsync” AFAIK没有特定的ImageButton用于FFImageLoading,但您可以直接使用ImageViewAsync将其设置为android:clickable=“true”,并添加单击事件 如前所述,ImageButton只是一个默认

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


如果我想将图像加载到ImageButton中,我找不到可以使用的内容。未找到“ImageButtonAsync”

AFAIK没有特定的
ImageButton
用于FFImageLoading,但您可以直接使用
ImageViewAsync
将其设置为
android:clickable=“true”
,并添加单击事件

如前所述,
ImageButton
只是一个默认背景为非空的
ImageView
,而且ImageButton.onSetAlpha()方法始终返回false,scaleType设置为居中,并且始终膨胀为可聚焦。因此,如果你需要这种行为,你可以添加它

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

除此之外,您还可以添加自定义加载逻辑,如从
ImageLoaderTask
继承所述,并像
ImageService.Instance.LoadImage(customImageTask)

最后,另一种方法(但有点粗俗和无性能)是创建一个
imageviewsync
,仅用于保存FFImageLoading的结果,并在成功回调时在
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);
var myImageButton=myView.findviewbyd(Resource.Id.my_image_按钮);
var myImageView=new-imageviewsync(this);//这就是背景
ImageService.Instance.LoadUrl(this.Source[position].LogoImagePath)
.Success(()=>myImageButton.SetImageDrawable(myImageView.Drawable))
.Into(myImageView);

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

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

首先在xaml中引用FFImageLoading.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>
创建绑定到xaml文件的属性

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

    private ICommand yourCommand;
Wait ExecuteYourCommandAsync是您创建的一个方法。在这里,你会把你的逻辑放在你真正想要的点击手势上


也可以使用命令通过对象。让met知道这是否合理

我已更新了答案,以显示该命令在页面的ViewModel上的外观
    public ICommand YourCommand
    {
        get => yourCommand;
        set => SetProperty(ref yourCommand, value);
    }

    private ICommand yourCommand;