Freigeben über


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:

Festlegen der INTERNET-Berechtigung im Android-Manifest

Ö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 WebViewbereitgestellt. 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 falsewird, 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= trueWebViewJavaScriptEnabledaktiviert (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:

Beispiel für die App, die eine WebView anzeigt

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:

Beispielfotos der Schaltfläche

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.