Xamarin Forms HybridWebview 始终在浏览器中打开
Xamarin Forms HybridWebview Always Opens in Browser
我已经按照此处所述实现了 HybridWebView:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/custom-renderer/hybridwebview/
目前,我在渲染器中硬编码了 url,如下所示:
Control.LoadUrl("http://www.google.com");
结果是 url 打开,但总是在新浏览器中,而不是像我期望的那样嵌入到我的 ContentPage 中。
是否有 Android.Webkit.WebView 上的设置 属性 我可以用来确定它的显示方式?
The result is the url opens, but always in a new browser, not embedded in my ContentPage as I would expect.
对于 android 平台,它使用 Android.Webkit.WebView
作为本机控件,您可以从代码中看到它:
if (Control == null) {
var webView = new Android.Webkit.WebView (Forms.Context);
webView.Settings.JavaScriptEnabled = true;
SetNativeControl (webView);
}
然后对于 Android.Webkit.WebView
,如果您不启用 activity 来处理查看网页的意图,它只是一个简单的网页查看器,还不完全是一个浏览器,因为作为只要您单击 link,默认的 Android 浏览器就会处理它。要启用它,此代码可以在 WebView
初始化后的任何位置:webView.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,如果它 returns 为真,意味着该方法已经处理了 URL 并且事件不应传播。
我已经按照此处所述实现了 HybridWebView:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/custom-renderer/hybridwebview/
目前,我在渲染器中硬编码了 url,如下所示:
Control.LoadUrl("http://www.google.com");
结果是 url 打开,但总是在新浏览器中,而不是像我期望的那样嵌入到我的 ContentPage 中。
是否有 Android.Webkit.WebView 上的设置 属性 我可以用来确定它的显示方式?
The result is the url opens, but always in a new browser, not embedded in my ContentPage as I would expect.
对于 android 平台,它使用 Android.Webkit.WebView
作为本机控件,您可以从代码中看到它:
if (Control == null) {
var webView = new Android.Webkit.WebView (Forms.Context);
webView.Settings.JavaScriptEnabled = true;
SetNativeControl (webView);
}
然后对于 Android.Webkit.WebView
,如果您不启用 activity 来处理查看网页的意图,它只是一个简单的网页查看器,还不完全是一个浏览器,因为作为只要您单击 link,默认的 Android 浏览器就会处理它。要启用它,此代码可以在 WebView
初始化后的任何位置:webView.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,如果它 returns 为真,意味着该方法已经处理了 URL 并且事件不应传播。