Partager via


Vue web Xamarin.Android

WebView vous permet de créer votre propre fenêtre d’affichage des pages web (ou même de développer un navigateur complet). Dans ce tutoriel, vous allez créer un simpleActivity qui peut afficher et parcourir des pages web.

Créez un projet nommé HelloWebView.

Ouvrez Resources/Layout/Main.axml et insérez les éléments suivants :

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

Étant donné que cette application accède à Internet, vous devez ajouter les autorisations appropriées au fichier manifeste Android. Ouvrez les propriétés de votre projet pour spécifier les autorisations dont votre application a besoin pour fonctionner. Activez l’autorisation INTERNET comme indiqué ci-dessous :

Définition de l’autorisation INTERNET dans le manifeste Android

Ouvrez maintenant MainActivity.cs et ajoutez une directive using pour Webkit :

using Android.Webkit;

En haut de la MainActivity classe, déclarez un WebView objet :

WebView web_view;

Lorsque webView est invité à charger une URL, il délègue par défaut la demande au navigateur par défaut. Pour que WebView charge l’URL (plutôt que le navigateur par défaut), vous devez sous-classer Android.Webkit.WebViewClient et remplacer la ShouldOverriderUrlLoading méthode. Une instance de cette personnalisation WebViewClient est fournie à .WebView Pour ce faire, ajoutez la classe imbriquée HelloWebViewClient suivante à l’intérieur MainActivity:

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

Lorsque ShouldOverrideUrlLoading retourne false, il signale à Android que le instance actuel WebView a géré la requête et qu’aucune autre action n’est nécessaire.

Si vous ciblez le niveau d’API 24 ou ultérieur, utilisez la surcharge de ShouldOverrideUrlLoading qui prend un IWebResourceRequest pour le deuxième argument au lieu d’un 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;
    }
}

Ensuite, utilisez le code suivant pour la OnCreate()méthode ) :

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

Cela initialise le membre WebView avec celui de la Activity disposition et active JavaScript pour le WebView avec JavaScriptEnabled= true (consultez la recette Appeler C# à partir de JavaScript pour plus d’informations sur l’appel des fonctions C# à partir de JavaScript). Enfin, une page web initiale est chargée avec LoadUrl(String).

Générez et exécutez l'application. Vous devez voir une application de visionneuse de pages web simple comme celle affichée dans la capture d’écran suivante :

Exemple d’application affichant un WebView

Pour gérer l’appui sur la touche BACK , ajoutez l’instruction using suivante :

using Android.Views;

Ensuite, ajoutez la méthode suivante à l’intérieur de l’activité 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);
}

CetteOnKeyDown(int, KeyEvent) la méthode de rappel est appelée chaque fois qu’un bouton est enfoncé pendant l’exécution de l’activité. La condition à l’intérieur utilise le KeyEvent pour case activée si la touche enfoncée est le bouton PRÉCÉDENT et si le WebView est réellement capable de naviguer en arrière (s’il a un historique). Si les deux sont true, la GoBack() méthode est appelée, ce qui remonte d’une étape dans l’historique WebView . Le retour true indique que l’événement a été géré. Si cette condition n’est pas remplie, l’événement est renvoyé au système.

Exécutez de nouveau l'application. Vous devez maintenant être en mesure de suivre les liens et de revenir dans l’historique des pages :

Exemples de captures d’écran du bouton Précédent en action

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Open Source Android et utilisés selon les termes décrits dans lalicence d’attribution Creative Commons 2.5.