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 simple
Activity
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 :
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 :
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);
}
Cette
OnKeyDown(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 :
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.