Xamarin.forms 使用WebViewRenderer正确呈现网页高度,但不使用ViewRenderer<;HybridWebView、Android.Webkit.WebView>;

Xamarin.forms 使用WebViewRenderer正确呈现网页高度,但不使用ViewRenderer<;HybridWebView、Android.Webkit.WebView>;,xamarin.forms,webview,xamarin.android,android-webview,custom-renderer,Xamarin.forms,Webview,Xamarin.android,Android Webview,Custom Renderer,默认的WebViewRenderer和我的自定义ViewRenderer之间有些不同,我必须找出原因。基本上,如果我使用自定义的ViewRenderer,则不会显示网页 ViewRenderer的高度有一些问题:100%并错误地解释此CSS。因此,高度为0px,尽管它应使用全高。另一方面,它可以使用精确的尺寸(如400px) WebViewRenderer的代码: 公共类CustomWebView:WebView { } 公共类CustomWebViewRenderer:WebViewRen

默认的
WebViewRenderer
和我的自定义
ViewRenderer
之间有些不同,我必须找出原因。基本上,如果我使用自定义的
ViewRenderer
,则不会显示网页

ViewRenderer
的高度有一些问题:100%并错误地解释此CSS。因此,高度为0px,尽管它应使用全高。另一方面,它可以使用精确的尺寸(如400px)

WebViewRenderer的代码


公共类CustomWebView:WebView
{
}
公共类CustomWebViewRenderer:WebViewRenderer
{
公共CustomWebViewRenderer(上下文):基础(上下文)
{
}
}
视图渲染器的代码:


公共类HybridWebView:View
{
}
公共类HybridWebViewRenderer:ViewRenderer
{
私人语境;
公共HybridWebViewRenderer(上下文):基础(上下文)
{
this.context=上下文;
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(Control==null)
{
var webView=newandroid.Webkit.webView(this.context);
webView.Settings.JavaScriptEnabled=true;
SetWebViewClient(新的CustomWebViewClient());
SetNativeControl(网络视图);
}
if(e.OldElement!=null)
{
}
if(例如NewElement!=null)
{
控件。加载URL(“http://somesite");
}
}
}
公共类CustomWebViewClient:WebViewClient
{
}
一个假设是,响应网站适应其
网络视图的大小,并且由于渲染过程发生在背景中,因此此时它的高度不知何故为零。

我不知道为什么,但为我解决了这个问题:

webView.LayoutParameters = new LinearLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent);

如果有人有线索,请发表评论。

您能检查一下相同的url是否适用于http而不是http吗https@Gautam:要打开URL,我会发出一些web请求以获取正确的登录令牌(OAuth)。一旦我有了我的URL,我就会在
WebView
中显示它。在这里,使用
http
https
没有区别。在设备和模拟器上都进行了测试。您可以创建一个继承WebChromeClient的类,然后替换'var webView=new Android.Webkit.webView(this.context)`@LeonLu MSFT:我已经尝试使用
webView.SetWebChromeClient(新的CustomWebChromeClient(this.context)),但没有任何更改。或者我需要补充什么?