2017-01-30 1 views
1

Ich komme heute, weil ich auf der Last eines GIF mit der Android-Plattform stecken bin. Ich weiß, dass es funktioniert, weil es für UWP und iOS funktioniert, aber Android funktioniert nicht ..Xamarin Forms - WebView Html Quellproblem

ich dieses Objekt haben:

public class Gif : WebView 
{ 
    public string GifSource 
    { 
     set 
     { 
      var html = new HtmlWebViewSource(); 
      html.Html = String.Format(@"<html><body style='background: #FF0000;'><img src='{0}' style='width:100%;height:100%;'/></body></html>", "https://media.giphy.com/media/UGifMFmx0gERG/giphy.gif"); 
      Debug.WriteLine("Html.Source = '{0}'", html.Html); 
      this.Margin = -10; 
      this.Source = html; 
     } 
     get { return (string)GetValue(SourceProperty); } 
    } 
} 

So erkläre ich gerade diese Gif in meiner XAML-Seite:

<AbsoluteLayout AbsoluteLayout.LayoutBounds="0.5, 0.5, 1, 1" AbsoluteLayout.LayoutFlags="All"> 
      <control:Gif 
       AbsoluteLayout.LayoutBounds="0.5, 0, 1, 0.9" 
       AbsoluteLayout.LayoutFlags="All" 
       BackgroundColor="Red" 
       GifSource="Gifs/LoginBackground.gif" /> 
      <BoxView 
       AbsoluteLayout.LayoutBounds="0.5, 0.5, 1, 1" 
       AbsoluteLayout.LayoutFlags="All" 
       BackgroundColor="Transparent" /> 
</AbsoluteLayout> 

PS: Ich erkläre eine BoxView, um die Möglichkeit zu umgehen, die Webansicht durch eine Benutzergeste zu verschieben.

Nun ist die Sache ist, es auf UWP funktioniert perfekt, mit dem sowohl Code:

html.Html = String.Format(@"<html><body style='background: #FF0000;'><img src='{0}' style='width:100%;height:100%;'/></body></html>", "https://media.giphy.com/media/UGifMFmx0gERG/giphy.gif"); 
this.Source = html; 

oder

this.Source = "https://media.giphy.com/media/UGifMFmx0gERG/giphy.gif"; 

Auf Android, die this.Source = "https://media.giphy.com/media/UGifMFmx0gERG/giphy.gif"; funktioniert, aber die erste Lösung nicht Arbeit, was ein Problem ist. Durch das Erstellen meiner eigenen HTML erlaubt es mir, das GIF füllen meine Ansicht im Gegensatz zu den Link ... Zu mehr Punkt, wenn ich die style='width:100%;height:100%;' des HTML löschen, funktioniert es, aber noch einmal, nicht mit der guten Größe ..

Irgendeine Idee? Danke im Voraus !

Antwort

0

:)

ich eine Lösung gefunden, es ist komisch, aber ich habe diesen Code:

html.Html = String.Format(@"<html><body style='background: #000000;'><img src='{0}' style='width:{1};height:{2};'/></body></html>", 
DependencyService.Get<IBaseUrl>().Get() + value, App.ScreenSize.Width, (App.ScreenSize.Height/100) * 90); 

Das erste, was seltsam ist, dass 100% -Wert funktioniert aber nur, wenn ich es gebe die WebView . Ich meine damit, wenn ich 100% als HTML-Text einsetze, funktioniert es nicht, anders als wenn ich einen echten Wert gebe. Vielleicht kann die WebView nicht auf die Eigenschaft zugreifen.

Nun, wie bekomme ich die Größe des Bildschirms?


Android:

App.ScreenSize = new Xamarin.Forms.Size((int)(Resources.DisplayMetrics.WidthPixels/Resources.DisplayMetrics.Density), (int)(Resources.DisplayMetrics.HeightPixels/Resources.DisplayMetrics.Density)); 

Fügen Sie es in Ihrem MainActivity.cs Ihres Android-Projekt

UWP:

App.ScreenSize = new Size(Window.Current.Bounds.Width, Window.Current.Bounds.Height); 

Fügen Sie es in Ihrem MainPage.xaml.cs Ihrer UWP Projekt


In Ihrem App.cs des PCL Teil erklären, ein public static Size ScreenSize;

Viel Spaß!