Udostępnij za pośrednictwem


Widok sieci Web platformy Xamarin.Android

WebView Umożliwia utworzenie własnego okna do wyświetlania stron internetowych (a nawet tworzenia pełnej przeglądarki). W tym samouczku utworzysz prosty Activity mogą wyświetlać i nawigować po stronach sieci Web.

Utwórz nowy projekt o nazwie HelloWebView.

Otwórz plik Resources/Layout/Main.axml i wstaw następujące elementy:

<?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" />

Ponieważ ta aplikacja będzie uzyskiwać dostęp do Internetu, należy dodać odpowiednie uprawnienia do pliku manifestu systemu Android. Otwórz właściwości projektu, aby określić uprawnienia wymagane przez aplikację do działania. INTERNET Włącz uprawnienie, jak pokazano poniżej:

Setting the INTERNET permission in the Android Manifest

Teraz otwórz MainActivity.cs i dodaj dyrektywę using dla zestawu Webkit:

using Android.Webkit;

W górnej MainActivity części klasy zadeklaruj WebView obiekt:

WebView web_view;

Gdy element WebView zostanie poproszony o załadowanie adresu URL, domyślnie deleguje żądanie do domyślnej przeglądarki. Aby element WebView załadował adres URL (a nie domyślną przeglądarkę), musisz podklasy Android.Webkit.WebViewClient i zastąpić metodę ShouldOverriderUrlLoading . Wystąpienie tego niestandardowego elementu WebViewClient jest udostępniane użytkownikowi WebView. W tym celu dodaj następującą klasę zagnieżdżonych HelloWebViewClient wewnątrz MainActivityelementu :

public class HelloWebViewClient : WebViewClient
{
    public override bool ShouldOverrideUrlLoading (WebView view, string url)
    {
        view.LoadUrl(url);
        return false;
    }
}

Gdy ShouldOverrideUrlLoading funkcja zwraca falsewartość , wysyła sygnał do systemu Android, że bieżące WebView wystąpienie obsłużyło żądanie i że żadne dalsze działania nie są konieczne.

Jeśli używasz interfejsu API na poziomie 24 lub nowszym, użyj przeciążeniaShouldOverrideUrlLoading, które przyjmuje IWebResourceRequest dla drugiego argumentu zamiast :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;
    }
}

Następnie użyj następującego OnCreate()kodu dla metody ) :

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");
}

Spowoduje to zainicjowanie elementu członkowskiego WebView przy użyciu elementu z Activity układu i włączenie języka JavaScript dla WebView= true JavaScriptEnabledelementu (zobacz przepis wywołania języka C# z języka JavaScript, aby uzyskać informacje na temat wywoływania funkcji języka C# z języka JavaScript). Na koniec początkowa strona internetowa jest ładowana z elementem LoadUrl(String).

Skompiluj i uruchom aplikację. Powinna zostać wyświetlona prosta aplikacja przeglądarki stron internetowych, jak pokazano na poniższym zrzucie ekranu:

Example of app displaying a WebView

Aby obsłużyć naciśnięcie klawisza przycisku BACK , dodaj następującą instrukcję using:

using Android.Views;

Następnie dodaj następującą metodę wewnątrz działania HelloWebView :

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);
}

To OnKeyDown(int, KeyEvent) Metoda wywołania zwrotnego będzie wywoływana za każdym razem, gdy naciśnięcie przycisku jest uruchamiane. Warunek wewnątrz używa , KeyEvent aby sprawdzić, czy naciśnięcie klawisza jest przyciskiem BACK i czy WebView rzeczywiście jest w stanie przechodzić z powrotem (jeśli ma historię). Jeśli oba są prawdziwe, GoBack() metoda jest wywoływana, co spowoduje przejście z powrotem o jeden krok w WebView historii. Zwracanie true wskazuje, że zdarzenie zostało obsłużone. Jeśli ten warunek nie zostanie spełniony, zdarzenie zostanie wysłane z powrotem do systemu.

Uruchom ponownie aplikację. Teraz powinno być możliwe obserwowanie linków i powrót przez historię strony:

Example screenshots of the Back button in action

Części tej strony to modyfikacje oparte na pracy utworzonej i udostępnionej przez projekt open source systemu Android i używane zgodnie z warunkami opisanymi wlicencji autorstwa Creative Commons 2.5.