Xamarin Forms HybridWebview始终在浏览器中打开

eri*_*rin 3 android android-webview xamarin xamarin.forms

我已经实现了HybridWebView,如下所述:https : //developer.xamarin.com/guides/xamarin-forms/application-fundamentals/custom-renderer/hybridwebview/

现在,我已经在渲染器中对网址进行了硬编码,如下所示:

Control.LoadUrl("http://www.google.com");
Run Code Online (Sandbox Code Playgroud)

结果是打开了url,但始终在新的浏览器中,而不像我期望的那样嵌入到我的ContentPage中。

我可以使用Android.Webkit.WebView上的Settings属性来确定其显示方式吗?

Gra*_*eng 6

结果是打开了url,但始终在新的浏览器中,而不像我期望的那样嵌入到我的ContentPage中。

对于android平台,Android.Webkit.WebView您可以从代码中看到它作为本机控件:

if (Control == null) {
    var webView = new Android.Webkit.WebView (Forms.Context);
    webView.Settings.JavaScriptEnabled = true;
    SetNativeControl (webView);
}
Run Code Online (Sandbox Code Playgroud)

然后,对于Android.Webkit.WebView,如果您未启用活动以处理查看网页的意图,则它是一个简单的网页查看器,而不是浏览器,因为单击链接后,默认的Android浏览器就会处理它。为了实现它,这个代码可以去任何地方的初始化如下WebViewwebView.SetWebViewClient(new WebViewClient())。因此,您可以添加以下代码,例如:

if (Control == null) {
    var webView = new Android.Webkit.WebView (Forms.Context);
    webView.SetWebViewClient(new WebViewClient());
    webView.Settings.JavaScriptEnabled = true;
    SetNativeControl (webView);
}
Run Code Online (Sandbox Code Playgroud)

通常,我们还WebViewClient可以继承并重写ShouldOverrideUrlLoading,如果它返回true,则意味着该方法已经处理了URL,并且该事件不应传播。