Sdílet prostřednictvím


Webové zobrazení Xamarin.Android

WebView umožňuje vytvořit vlastní okno pro prohlížení webových stránek (nebo dokonce vyvíjet kompletní prohlížeč). V tomto kurzu vytvoříte jednoduchý Activity které mohou zobrazit a procházet webové stránky.

Vytvořte nový projekt s názvem HelloWebView.

Otevřete Prostředky/Layout/Main.axml a vložte následující:

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

Vzhledem k tomu, že tato aplikace bude mít přístup k internetu, musíte přidat příslušná oprávnění k souboru manifestu Androidu. Otevřete vlastnosti projektu a určete oprávnění, která vaše aplikace vyžaduje k provozu. INTERNET Povolte oprávnění, jak je znázorněno níže:

Setting the INTERNET permission in the Android Manifest

Teď otevřete MainActivity.cs a přidejte direktivu using pro Webkit:

using Android.Webkit;

V horní části MainActivity třídy deklarujte WebView objekt:

WebView web_view;

Když se zobrazí výzva k načtení adresy URL webového zobrazení , ve výchozím nastavení požadavek deleguje do výchozího prohlížeče. Pokud chcete, aby WebView načetl adresu URL (nikoli výchozí prohlížeč), musíte podtřídu Android.Webkit.WebViewClient a přepsat metodu ShouldOverriderUrlLoading . Instance tohoto vlastního objektu WebViewClient je poskytována do objektu WebView. Uděláte to tak, že do této MainActivitytřídy přidáte následující vnořenou HelloWebViewClient třídu:

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

Když ShouldOverrideUrlLoading se vrátí false, signalizuje Androidu, že aktuální WebView instance zpracovala požadavek a že není nutná žádná další akce.

Pokud cílíte na rozhraní API úrovně 24 nebo novější, použijte přetížení ShouldOverrideUrlLoading , které přebírá IWebResourceRequest pro druhý argument místo 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;
    }
}

Dále použijte následující kód pro metodu OnCreate()):

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

Tím se člen WebView inicializuje pomocí člena Activity z rozložení a povolí javascript pro WebView sou JavaScriptEnabled= true (viz volání jazyka C# z javascriptového receptu, kde najdete informace o tom, jak volat funkce jazyka C# z JavaScriptu). Nakonec se načte počáteční webová stránka s LoadUrl(String).

Sestavte a spusťte aplikaci. Měla by se zobrazit jednoduchá aplikace prohlížeče webových stránek jako aplikace zobrazená na následujícím snímku obrazovky:

Example of app displaying a WebView

Pokud chcete stisknout tlačítko ZPĚT , přidejte následující příkaz using:

using Android.Views;

Dále do aktivity přidejte následující metodu 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);
}

Tento OnKeyDown(int, KeyEvent) Metoda zpětného volání bude volána vždy, když je při spuštění aktivity stisknuto tlačítko. Podmínka uvnitř slouží KeyEvent ke kontrole, jestli je stisknutá klávesa tlačítko ZPĚT a jestli WebView je skutečně schopný se vrátit zpět (pokud má historii). Pokud jsou oba pravdivé, pak GoBack() je volána metoda, která přejde zpět o jeden krok v WebView historii. true Vrácení označuje, že událost byla zpracována. Pokud tato podmínka není splněna, událost se odešle zpět do systému.

Spusťte aplikaci znovu. Teď byste měli být schopni sledovat odkazy a procházet historii stránek:

Example screenshots of the Back button in action

Části této stránky jsou upraveny na základě práce vytvořené a sdílené opensourcový projekt Androidu a používají se podle podmínek popsaných vlicenci Creative Commons 2.5 Atribution License.