Между стандартным значением WebViewRenderer
и моим пользовательским ViewRenderer
есть нечто иное, и я должен выяснить, почему. По сути, веб-страница не отображается, если я использую свой пользовательский ViewRenderer
.
ViewRenderer
имеет некоторые проблемы с height: 100%;
и неправильно интерпретирует этот CSS. В результате высота составляет 0px, несмотря на то, что она должна использовать полную высоту. С другой стороны, он работает с точными размерами (например, 400 пикселей).
Код для WebViewRenderer
:
<local:CustomWebView x:Name="webView"
Source="http://somesite"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
HeightRequest="1000"
WidthRequest="1000"/>
public class CustomWebView : WebView
{
}
public class CustomWebViewRenderer : WebViewRenderer
{
public CustomWebViewRenderer(Context context) : base(context)
{
}
}
Код для ViewRenderer
:
<local:HybridWebView x:Name="webView"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
HeightRequest="1000"
WidthRequest="1000"/>
public class HybridWebView : View
{
}
public class HybridWebViewRenderer : ViewRenderer<HybridWebView, Android.Webkit.WebView>
{
private Context context;
public HybridWebViewRenderer(Context context) : base(context)
{
this.context = context;
}
protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e)
{
base.OnElementChanged(e);
if (Control == null)
{
var webView = new Android.Webkit.WebView(this.context);
webView.Settings.JavaScriptEnabled = true;
webView.SetWebViewClient(new CustomWebViewClient());
SetNativeControl(webView);
}
if (e.OldElement != null)
{
}
if (e.NewElement != null)
{
Control.LoadUrl("http://somesite");
}
}
}
public class CustomWebViewClient : WebViewClient
{
}
Одно из предположений заключается в том, что адаптивный веб-сайт приспосабливается к размеру WebView
, и, поскольку процесс рендеринга происходит в фоновом режиме, он в то же время имеет высоту нуля.