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:
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 MainActivity
elementu :
public class HelloWebViewClient : WebViewClient
{
public override bool ShouldOverrideUrlLoading (WebView view, string url)
{
view.LoadUrl(url);
return false;
}
}
Gdy ShouldOverrideUrlLoading
funkcja zwraca false
wartość , 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
JavaScriptEnabled
elementu (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:
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:
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.