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:
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 MainActivity
tří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:
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:
Čá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.