使用 WebViewRenderer 正确呈现的网页高度,但使用 ViewRenderer 无法正确呈现<HybridWebView, Android.Webkit.WebView>
Web page height correctly rendered with WebViewRenderer, but not with ViewRenderer<HybridWebView, Android.Webkit.WebView>
默认 WebViewRenderer
和我的自定义 ViewRenderer
之间有些不同,我必须找出原因。基本上,如果我使用自定义 ViewRenderer
.
,则网页不会显示
ViewRenderer
与 height: 100%;
有一些问题并且解释这个 CSS 是错误的。结果高度为 0px,尽管它应该使用全高。另一方面,它适用于精确尺寸(例如 400px)。
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
大小,并且由于渲染过程在后台进行,此时它的高度不知何故为零。
我不知道为什么,但是 为我解决了这个问题:
webView.LayoutParameters = new LinearLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent);
有知道的请留言。
默认 WebViewRenderer
和我的自定义 ViewRenderer
之间有些不同,我必须找出原因。基本上,如果我使用自定义 ViewRenderer
.
ViewRenderer
与 height: 100%;
有一些问题并且解释这个 CSS 是错误的。结果高度为 0px,尽管它应该使用全高。另一方面,它适用于精确尺寸(例如 400px)。
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
大小,并且由于渲染过程在后台进行,此时它的高度不知何故为零。
我不知道为什么,但是
webView.LayoutParameters = new LinearLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent);
有知道的请留言。