Bagikan melalui


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:

Setting the INTERNET permission in the Android Manifest

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:

Example of app displaying a WebView

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:

Example screenshots of the Back button in action

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.