从网址上轮播视图上缺少图像

问题描述 投票:0回答:1

我正在制作一个应用Xamarin Form的应用程序,它应该可以在iOS和Android上运行,我有一个带有图像的旋转木马视图,所以我尝试使用这个金块制作带有单元格的旋转木马:URL

虽然在Android上的iOS上正常工作,但是单元格一直在崩溃,所以我改变了一个只包含一个图像的单元格,现在一切正常,但是在旋转木马里偶尔会丢失声纳图像。

我错过了什么吗?是否有一个用于缓存的xamarin表格的块包正确显示所有图像?

谢谢

制作FFImage.Loading在Android上工作没有成功

android细胞

<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:ffimage="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
             xmlns:local="clr-namespace:CTSApp.Utility" 
             x:Class="CTSApp.Celle.cella_volantino_android">
    <ContentView.Content>
         <ScrollView>
            <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand">
                <local:PinchToZoomContainer>
                    <local:PinchToZoomContainer.Content>
                  <Image Source="{Binding url}" HorizontalOptions = "FillAndExpand" 
                         VerticalOptions = "FillAndExpand" />
                   </local:PinchToZoomContainer.Content>
                </local:PinchToZoomContainer>
            </StackLayout>
        </ScrollView>
    </ContentView.Content>
</ContentView>

iOS手机

<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:ffimage="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
             xmlns:fftransf="clr-namespace:FFImageLoading.Transformations;assembly=FFImageLoading.Transformations"

    xmlns:local="clr-namespace:CTSApp.Utility" x:Class="CTSApp.Celle.cella_volantino">
        <ContentView.Content>
            <ScrollView>
                <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand">
                     <local:PinchToZoomContainer>
                        <local:PinchToZoomContainer.Content>
                            <ffimage:CachedImage Grid.RowSpan="2" Aspect="AspectFill"
                                     Source="{Binding url}"
                                     DownsampleToViewSize="false"
                                     LoadingPlaceholder="placeholder.png"
                                     ErrorPlaceholder="placeholder.png"
                                     VerticalOptions="FillAndExpand"
                                     HorizontalOptions="FillAndExpand">
                                <ffimage:CachedImage.CacheDuration>
                                    <x:TimeSpan>0,0,15,0</x:TimeSpan>
                                </ffimage:CachedImage.CacheDuration>
                          </ffimage:CachedImage>
                        </local:PinchToZoomContainer.Content>
                    </local:PinchToZoomContainer>
                </StackLayout>
            </ScrollView>
        </ContentView.Content>
    </ContentView>

感谢帮助。

编辑

这是我的主要活动:

using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Plugin.FirebasePushNotification;
using Firebase;
using Plugin.CurrentActivity;
using Plugin.Permissions;
using Xamarin;
using Xamarin.Forms;
using Android.Content.Res;
using SegmentedControl.FormsPlugin.Android;
using ZXing.Mobile;

namespace CTSApp.Droid
{
    [Activity(Label = "CTSApp", Icon = "@drawable/ic_launcher", Theme = "@style/MyTheme.Splash", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity

    {
        protected override void OnCreate(Bundle bundle)
        {

            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);
            global::Xamarin.Forms.Forms.Init(this, bundle);


            MobileBarcodeScanner.Initialize(Application);
            Rg.Plugins.Popup.Popup.Init(this, bundle);
            ZXing.Net.Mobile.Forms.Android.Platform.Init();
            FFImageLoading.Forms.Droid.CachedImageRenderer.Init(enableFastRenderer: true);
            Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity = this;
            CrossCurrentActivity.Current.Init(this, bundle);
            SegmentedControlRenderer.Init();
            FirebasePushNotificationManager.ProcessIntent(Intent);

            LoadApplication(new App());


        }


        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
        {
            Plugin.Permissions.PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
            PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
            global::ZXing.Net.Mobile.Forms.Android.PermissionsHandler.OnRequestPermissionsResult (requestCode, permissions, grantResults);           

        }
    }
}

FFImageLoader版本2.4.3.840 XamarinLoader版本2.50

编辑2

也许我已经找到了问题,这是我正在使用的新的确定单元格

<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:ffimage="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
             xmlns:local="clr-namespace:CTSApp.Utility" 
             x:Class="CTSApp.Celle.cella_volantino_android">
    <ContentView.Content>
         <ScrollView>
            <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="CenterAndExpand">
                <local:PinchToZoomContainer>
                    <local:PinchToZoomContainer.Content>
                  <Image Source="{Binding url}" HorizontalOptions = "FillAndExpand" 
                         VerticalOptions = "FillAndExpand" >
                        <Image.Source>
                        <UriImageSource Uri="{Binding url}" 
                            CacheValidity="14" 
                            CachingEnabled="true"/>
                        </Image.Source>
                    </Image>
                   </local:PinchToZoomContainer.Content>
                </local:PinchToZoomContainer>
            </StackLayout>
        </ScrollView>
    </ContentView.Content>
</ContentView>

现在我正在使用标准图像和缓存,现在在iOS上一切正常,在android上我从一些页面得到错误

ImageLoaderSourceHandler:无法检索图像或图像数据无效:Uri:

显然没有加载,我按照这里的教程https://doumer.me/resolve-image-loading-error-in-xamarin-forms/

仍然没有运气,但如果我水平转动手机正确加载图像,我真的没有任何线索

视频在这里:

https://streamable.com/rk1rv

android firebase xamarin carousel
1个回答
0
投票

下面是CarouselView显示图像的示例。所有可以在IOS和Android中工作。如果想使用ffimage:CachedImage,用它替换Image

这是Xaml代码:

<StackLayout>
    <CarouselView x:Name="carousel" ItemsSource="{Binding uris}">
        <CarouselView.ItemTemplate>
            <DataTemplate>
                <Image
                    x:Name="PlantPicture"
                    Source="{Binding uri}"
                    HorizontalOptions="Center"
                    VerticalOptions="Center"
                    WidthRequest="150"
                    HeightRequest="150">
                </Image>
            </DataTemplate>
        </CarouselView.ItemTemplate>
    </CarouselView>
</StackLayout>

型号代码:

public class FloraData
{
    public class StringData
    {
        public string uri { get; set; }
    }

    public List<StringData> uris { get; set; }

    public FloraData()
    {
        uris = new List<StringData>() { new StringData() { uri = "https://static.inaturalist.org/photos/504134/medium.jpg?1379628103" },
                                            new StringData() { uri = "https://static.inaturalist.org/photos/8784478/small.jpg?1499006293" },
                                            new StringData() { uri = "https://api.idigbio.org/v2/media/23cbb9eb2750e80848ac95b5d2919323?size=thumbnail" },
                                            new StringData() { uri = "https://api.idigbio.org/v2/media/c085496285be91ace0768eb517cc704b?size=thumbnail" },
                                            new StringData() { uri = "http://swbiodiversity.org/imglib/arizona/IND/IND-0049/IND-0049216_1491615930_tn.jpg" }};
    }
}

最后,ContentPage.cs BindingContext:

FloraData floraData = new FloraData();
carousel.BindingContext = floraData;
© www.soinside.com 2019 - 2024. All rights reserved.