Xamarin.Android-Webansicht
WebView
ermöglicht es Ihnen, Ein eigenes Fenster zum Anzeigen von Webseiten zu erstellen (oder sogar einen vollständigen Browser zu entwickeln). In diesem Tutorial erstellen Sie eine einfache
Activity
die Webseiten anzeigen und navigieren können.
Erstellen Sie ein neues Projekt mit dem Namen HelloWebView.
Öffnen Sie Resources/Layout/Main.axml , und fügen Sie Folgendes ein:
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
Da diese Anwendung auf das Internet zugreift, müssen Sie der Android-Manifestdatei die entsprechenden Berechtigungen hinzufügen. Öffnen Sie die Eigenschaften Ihres Projekts, um anzugeben, welche Berechtigungen Ihre Anwendung zum Betrieb benötigt. Aktivieren Sie die INTERNET
Berechtigung wie unten gezeigt:
Öffnen Sie nun MainActivity.cs , und fügen Sie eine using-Anweisung für Webkit hinzu:
using Android.Webkit;
Deklarieren Sie oben in der MainActivity
Klasse ein WebView
-Objekt:
WebView web_view;
Wenn die WebView aufgefordert wird, eine URL zu laden, delegiert sie standardmäßig die Anforderung an den Standardbrowser. Damit die WebView die URL lädt (anstelle des Standardbrowsers), müssen Sie die ShouldOverriderUrlLoading
-Methode unterklassen Android.Webkit.WebViewClient
und überschreiben. Ein instance dieser Benutzerdefinierten WebViewClient
wird für WebView
bereitgestellt. Fügen Sie hierzu die folgende geschachtelte HelloWebViewClient
Klasse hinzu MainActivity
:
public class HelloWebViewClient : WebViewClient
{
public override bool ShouldOverrideUrlLoading (WebView view, string url)
{
view.LoadUrl(url);
return false;
}
}
Wenn ShouldOverrideUrlLoading
zurückgegeben false
wird, signalisiert es Android, dass die aktuelle WebView
instance die Anforderung verarbeitet hat und dass keine weiteren Aktionen erforderlich sind.
Wenn Sie auf API-Ebene 24 oder höher abzielen, verwenden Sie die Überladung vonShouldOverrideUrlLoading
, die ein IWebResourceRequest
für das zweite Argument annimmt, anstelle von :string
public class HelloWebViewClient : WebViewClient
{
// For API level 24 and later
public override bool ShouldOverrideUrlLoading (WebView view, IWebResourceRequest request)
{
view.LoadUrl(request.Url.ToString());
return false;
}
}
Verwenden Sie als Nächstes den folgenden Code für die OnCreate()
Methode ):
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
web_view = FindViewById<WebView> (Resource.Id.webview);
web_view.Settings.JavaScriptEnabled = true;
web_view.SetWebViewClient(new HelloWebViewClient());
web_view.LoadUrl ("https://www.xamarin.com/university");
}
Dadurch wird das Element WebView
mit dem aus dem Activity
Layout initialisiert und JavaScript für den= true
WebView
JavaScriptEnabled
aktiviert (Informationen zum Aufrufen von C#-Funktionen aus JavaScript aus JavaScript finden Sie im Rezept zum Aufrufen von C#-Funktionen aus JavaScript). Schließlich wird eine anfängliche Webseite mit LoadUrl(String)
geladen.
Erstellen Sie die App, und führen Sie sie aus. Im folgenden Screenshot sollte eine einfache Webseite-Viewer-App angezeigt werden:
Fügen Sie die folgende using-Anweisung hinzu, um die Schaltfläche ZURÜCK zu drücken:
using Android.Views;
Fügen Sie als Nächstes der Aktivität die HelloWebView
folgende Methode hinzu:
public override bool OnKeyDown (Android.Views.Keycode keyCode, Android.Views.KeyEvent e)
{
if (keyCode == Keycode.Back && web_view.CanGoBack ())
{
web_view.GoBack ();
return true;
}
return base.OnKeyDown (keyCode, e);
}
Diese
OnKeyDown(int, KeyEvent)
die Rückrufmethode wird aufgerufen, wenn eine Schaltfläche gedrückt wird, während die Aktivität ausgeführt wird. Die Bedingung in verwendet den KeyEvent
, um zu überprüfen, ob es sich bei der gedrückten Taste um die Schaltfläche ZURÜCK handelt und ob die WebView
tatsächlich in der Lage ist, zurück zu navigieren (wenn es einen Verlauf hat). Wenn beide true sind, wird die GoBack()
-Methode aufgerufen, die einen Schritt im WebView
Verlauf zurück navigiert. Die Rückgabe true
gibt an, dass das Ereignis behandelt wurde. Wenn diese Bedingung nicht erfüllt ist, wird das Ereignis zurück an das System gesendet.
Führen Sie die Anwendung erneut aus. Sie sollten nun links folgen und wieder durch den Seitenverlauf navigieren können:
Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source-Projekt erstellt und freigegeben wurden und gemäß den in derCreative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.