2017-01-30 5 views
1

Я прихожу сегодня, потому что я застрял на загрузке GIF с платформой Android. Я знаю, что это работает, потому что он работает для UWP и прошивки, но андроид не работает ..Xamarin Forms - WebView Html Исходный номер

У меня есть этот объект:

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); } 
    } 
} 

Так что я просто декларировать это Gif в моем XAML стороне:

<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: Я объявляю BoxView, чтобы избежать возможности перемещения веб-представления по жестом пользователя.

Теперь дело в том, что работает на UWP отлично, с обоих кодом:

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; 

или

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

На Android, то this.Source = "https://media.giphy.com/media/UGifMFmx0gERG/giphy.gif"; работы, однако первое решение не работа, что является проблемой. Создав свой собственный html, он позволяет мне сделать gif заполнять мое представление, в отличие от ссылки ... В другой раз, если я удалю style='width:100%;height:100%;' html, он работает, но еще раз, а не с хорошим размером.

Любая идея? Заранее спасибо !

ответ

0

:)

Я нашел решение, это странно, но у меня есть этот код:

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); 

Первое странное в том, что 100% стоимости работ, но только если я дам его в WebView , Я имею в виду, что если я ставлю 100% как текст html, это не сработает, в отличие от того, когда я даю реальную ценность. Возможно, WebView не могут получить доступ к объекту ..

Теперь, как получить размер экрана?


Android:

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

Включите его в MainActivity.cs вашего Android проекта

UWP:

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

Включите его в MainPage.xaml.cs вашего UWP проекта


В вашем App.cs из PCL части, объявить public static Size ScreenSize;

Наслаждайтесь!