2017-06-19 8 views
0

ich eine HybridWebView hier beschrieben implementiert haben, wie: https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/custom-renderer/hybridwebview/Xamarin Forms HybridWebview Öffnet immer in Browser

Vorerst habe ich die URL in den Renderer fest einprogrammiert, wie folgt aus:

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

Das Ergebnis ist Die URL wird geöffnet, aber immer in einem neuen Browser, der nicht wie erwartet in meine ContentPage eingebettet ist.

Gibt es eine Settings-Eigenschaft in der Android.Webkit.WebView, die ich verwenden kann, um festzustellen, wie es angezeigt wird?

Antwort

2

Das Ergebnis ist die URL öffnet sich, aber immer in einem neuen Browser, nicht in meiner ContentPage eingebettet, wie ich es erwarten würde.

für Android-Plattform, verwendet es Android.Webkit.WebView als native Kontrolle, wie Sie es aus dem Code sehen:

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

Dann für Android.Webkit.WebView, wenn Sie eine nicht die Aktivität ermöglichen, die Absicht zu behandeln zu sehen Webseite, es ist ein einfacher Webseitenbetrachter, noch kein richtiger Browser, denn sobald Sie auf einen Link klicken, wird er vom Standard-Android-Browser gehandhabt. Um es zu aktivieren, kann dieser Code überall nach der Initialisierung von WebView: webView.SetWebViewClient(new WebViewClient()) gehen. So können Sie diesen Code beispielsweise hinzufügen:

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

Normalerweise können wir auch WebViewClient Unterklasse und ShouldOverrideUrlLoading außer Kraft setzen, wenn es wahr zurückgibt, bedeutet, dass das Verfahren den URL behandelt hat und das Ereignis sollte nicht ausbreiten.