Tampilan Web Xamarin.Android
WebView
memungkinkan Anda membuat jendela Anda sendiri untuk melihat halaman web (atau bahkan mengembangkan browser lengkap). Dalam tutorial ini, Anda akan membuat yang sederhana Activity
yang dapat melihat dan menavigasi halaman web.
Buat proyek baru bernama HelloWebView.
Buka Sumber Daya/Tata Letak/Main.axml dan sisipkan yang berikut ini:
<?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" />
Karena aplikasi ini akan mengakses Internet, Anda harus menambahkan izin yang sesuai ke file manifes Android. Buka properti proyek Anda untuk menentukan izin mana yang diperlukan aplikasi Anda untuk beroperasi. Aktifkan izin seperti yang ditunjukkan INTERNET
di bawah ini:
Sekarang buka MainActivity.cs dan tambahkan direktif penggunaan untuk Webkit:
using Android.Webkit;
Di bagian MainActivity
atas kelas, deklarasikan WebView
objek:
WebView web_view;
Ketika WebView diminta untuk memuat URL, webView secara default akan mendelegasikan permintaan ke browser default. Agar WebView memuat URL (bukan browser default), Anda harus subkelas Android.Webkit.WebViewClient
dan mengambil alih ShouldOverriderUrlLoading
metode . Instans kustom WebViewClient
ini disediakan untuk WebView
. Untuk melakukan ini, tambahkan kelas berlapis HelloWebViewClient
berikut di dalam MainActivity
:
public class HelloWebViewClient : WebViewClient
{
public override bool ShouldOverrideUrlLoading (WebView view, string url)
{
view.LoadUrl(url);
return false;
}
}
Saat ShouldOverrideUrlLoading
mengembalikan false
, ini memberi sinyal ke Android bahwa instans saat ini WebView
menangani permintaan dan bahwa tidak ada tindakan lebih lanjut yang diperlukan.
Jika Anda menargetkan API level 24 atau yang lebih baru, gunakan kelebihan beban ShouldOverrideUrlLoading
yang mengambil IWebResourceRequest
argumen kedua alih-alih 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;
}
}
Selanjutnya, gunakan kode berikut untuk OnCreate()
metode ) :
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");
}
Ini menginisialisasi anggota dengan anggota WebView
dari Activity
tata letak dan mengaktifkan JavaScript untuk WebView
dengan JavaScriptEnabled
= true
(lihat resep Call C# dari JavaScript untuk informasi tentang cara memanggil fungsi C# dari JavaScript). Terakhir, halaman web awal dimuat dengan LoadUrl(String)
.
Buat dan jalankan aplikasi. Anda akan melihat aplikasi penampil halaman web sederhana seperti yang terlihat di cuplikan layar berikut:
Untuk menangani penekanan tombol BACK , tambahkan pernyataan penggunaan berikut:
using Android.Views;
Selanjutnya, tambahkan metode berikut di HelloWebView
dalam Aktivitas:
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);
}
Ini OnKeyDown(int, KeyEvent)
Metode panggilan balik akan dipanggil setiap kali tombol ditekan saat Aktivitas sedang berjalan. Kondisi di dalam menggunakan KeyEvent
untuk memeriksa apakah tombol yang ditekan adalah tombol BACK dan apakah WebView
sebenarnya mampu menavigasi kembali (jika memiliki riwayat). Jika keduanya benar, maka GoBack()
metode dipanggil, yang akan menavigasi kembali satu langkah dalam WebView
riwayat. Mengembalikan true
menunjukkan bahwa peristiwa telah ditangani. Jika kondisi ini tidak terpenuhi, maka peristiwa dikirim kembali ke sistem.
Menjalankan aplikasi lagi. Anda sekarang dapat mengikuti tautan dan menavigasi kembali melalui riwayat halaman:
Bagian halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Proyek Sumber Terbuka Android dan digunakan sesuai dengan istilah yang dijelaskan dalamLisensi Atribusi Creative Commons 2.5.