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

时间:2017-06-19 20:57:22

标签: android xamarin xamarin.forms android-webview

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

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

Control.LoadUrl("http://www.google.com");

结果是网址打开,但总是在新的浏览器中,没有像我期望的那样嵌入到我的ContentPage中。

Android.Webkit.WebView上是否有一个Settings属性我可以用它来确定它的显示方式?

1 个答案:

答案 0 :(得分:4)

  

结果是网址打开,但总是在新的浏览器中,没有像我期望的那样嵌入到我的ContentPage中。

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

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

然后对于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);
}

通常我们也可以继承WebViewClient并覆盖ShouldOverrideUrlLoading,如果它返回true,则表示该方法已经处理了URL,并且该事件不应传播。