Vista WebWeb View

WebView permite crear su propia ventana para ver las páginas web (o incluso desarrollar un explorador completando).WebView allows you to create your own window for viewing web pages (or even develop a complete browser). En este tutorial, creará una sencilla ActivityIn this tutorial, you'll create a simple Activity que puede ver y explorar páginas web.that can view and navigate web pages.

Cree un nuevo proyecto denominado HelloWebView.Create a new project named HelloWebView.

Abra Resources/Layout/Main.axml e inserte lo siguiente:Open Resources/Layout/Main.axml and insert the following:

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

Dado que esta aplicación tendrá acceso a Internet, debe agregar que el archivo de manifiesto los permisos adecuados para Android.Because this application will access the Internet, you must add the appropriate permissions to the Android manifest file. Abra las propiedades del proyecto para especificar los permisos que la aplicación necesita para funcionar.Open your project's properties to specify which permissions your application requires to operate. Habilitar la INTERNET permiso tal como se muestra a continuación:Enable the INTERNET permission as shown below:

Establecer lo permisos de INTERNET en el manifiesto de Android

Ahora abra MainActivity.cs y agregue una mediante la directiva de Webkit:Now open MainActivity.cs and add a using directive for Webkit:

using Android.Webkit;

En la parte superior de la MainActivity clase, declare un WebView objeto:At the top of the MainActivity class, declare a WebView object:

WebView web_view;

Cuando el WebView es más frecuentes para cargar una dirección URL, de forma predeterminada delegará la solicitud para el explorador predeterminado.When the WebView is asked to load a URL, it will by default delegate the request to the default browser. Para tener la WebView carga la dirección URL (en lugar del explorador predeterminado), debe subclase Android.Webkit.WebViewClient e invalidar la ShouldOverriderUrlLoading método.To have the WebView load the URL (rather than the default browser), you must subclass Android.Webkit.WebViewClient and override the ShouldOverriderUrlLoading method. Una instancia de esta personalización WebViewClient se proporciona para el WebView.An instance of this custom WebViewClient is provided to the WebView. Para ello, agregue anidada siguiente HelloWebViewClient dentro de la clase MainActivity:To do this, add the following nested HelloWebViewClient class inside MainActivity:

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

Cuando ShouldOverrideUrlLoading devuelve false, señala a Android que actual WebView instancia procesó la solicitud y que no es necesaria realizar ninguna otra acción.When ShouldOverrideUrlLoading returns false, it signals to Android that the current WebView instance handled the request and that no further action is necessary.

Si tiene como destino el nivel de API 24 o versiones posterior, utilice la sobrecarga de ShouldOverrideUrlLoading que toma un IWebResourceRequest para el segundo argumento en lugar de un string:If you are targeting API level 24 or later, use the overload of ShouldOverrideUrlLoading that takes an IWebResourceRequest for the second argument instead of a 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;
    }
}

A continuación, use el siguiente código para el OnCreate()Next, use the following code for the OnCreate() método:method:

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

Esto inicializa el miembro WebView con uno de los Activity diseño y habilita JavaScript para la WebView con JavaScriptEnabled = true (consulte la llamar a C# desde JavaScript receta para obtener información acerca de cómo llamar a C# funciones de JavaScript).This initializes the member WebView with the one from the Activity layout and enables JavaScript for the WebView with JavaScriptEnabled = true (see the Call C# from JavaScript recipe for information about how to call C# functions from JavaScript). Por último, se carga una página web inicial con LoadUrl(String) .Finally, an initial web page is loaded with LoadUrl(String).

Compile y ejecute la aplicación.Build and run the app. Debería ver una aplicación de Visor de la página web sencilla que la muestra en la captura de pantalla siguiente:You should see a simple web page viewer app as the one seen in the following screenshot:

Ejemplo de aplicación de mostrar una vista WebExample of app displaying a WebView

Para controlar la volver botón pulsación de tecla, agregue la siguiente instrucción using:To handle the BACK button key press, add the following using statement:

using Android.Views;

A continuación, agregue el siguiente método dentro de la HelloWebView actividad:Next, add the following method inside the HelloWebView Activity:

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

Este OnKeyDown(int, KeyEvent)This OnKeyDown(int, KeyEvent) método de devolución de llamada se llamará cada vez que se presiona un botón mientras se ejecuta la actividad.callback method will be called whenever a button is pressed while the Activity is running. La condición dentro de usa el KeyEvent comprobar si se presionó la tecla es el volver botón y si el WebView es realmente capaz de navegar (si tiene un historial).The condition inside uses the KeyEvent to check whether the key pressed is the BACK button and whether the WebView is actually capable of navigating back (if it has a history). Si se cumplen, la GoBack() se llama el método, que le remitirá Retroceda un paso en el WebView historial.If both are true, then the GoBack() method is called, which will navigate back one step in the WebView history. Devolver true indica que se ha controlado el evento.Returning true indicates that the event has been handled. Si no se cumple esta condición, el evento se envía al sistema.If this condition is not met, then the event is sent back to the system.

Vuelva a ejecutar la aplicación.Run the application again. Ahora podrá seguir los vínculos y navegar hacia atrás en el historial de la página:You should now be able to follow links and navigate back through the page history:

Capturas de pantalla de ejemplo del botón Atrás en acciónExample screenshots of the Back button in action

Las partes de esta página son modificaciones en función de trabajo creado y compartido por el Android Open Source Project y usarse de acuerdo con los términos descritos en el licencia de atribución 2.5 de Creative Commons .Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.