默认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
的大小,并且由于呈现过程是在后台进行的,因此此时它的高度为零。
答案 0 :(得分:0)
我不知道为什么,但是this为我解决了这个问题:
webView.LayoutParameters = new LinearLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent);
如果有人有线索,请发表评论。