Accesibilidad en Android

En esta página se describe cómo usar las API de accesibilidad de Android para compilar aplicaciones según la lista de comprobación de accesibilidad. Consulte las páginas de accesibilidad de iOS y OS X para otras API de plataforma.

Descripción de elementos de la interfaz de usuario

Android proporciona una propiedad que usan las API de lectura de ContentDescription pantalla para proporcionar una descripción accesible del propósito del control.

La descripción del contenido se puede establecer en C# o en el archivo de diseño de AXML.

C#

La descripción se puede establecer en el código en cualquier cadena (o un recurso de cadena):

saveButton.ContentDescription = "Save data";

Diseño de AXML

En los diseños XML, use el android:contentDescription atributo :

<ImageButton
    android:id=@+id/saveButton"
    android:src="@drawable/save_image"
    android:contentDescription="Save data" />

Usar sugerencia para TextView

Para los controles y de la entrada de datos, use la propiedad para proporcionar una descripción de la entrada que EditTextTextView se espera Hint (en lugar de ContentDescription ). Cuando se haya escrito algún texto, el propio texto será "read" en lugar de la sugerencia.

C#

Establezca la Hint propiedad en el código:

someText.Hint = "Enter some text"; // displays (and is "read") when control is empty

Diseño de AXML

En los archivos de diseño XML, use el android:hint atributo :

<EditText
    android:id="@+id/someText"
    android:hint="Enter some text" />

Para asociar una etiqueta a un control de entrada de datos, use la LabelFor propiedad para

C#

En C#, establezca la propiedad en el identificador de recurso del control que describe este contenido (normalmente esta propiedad se establece en una etiqueta y hace referencia LabelFor a algún otro control de entrada):

EditText edit = FindViewById<EditText> (Resource.Id.editFirstName);
TextView tv = FindViewById<TextView> (Resource.Id.labelFirstName);
tv.LabelFor = Resource.Id.editFirstName;

Diseño de AXML

En XML de diseño, android:labelFor use la propiedad para hacer referencia al identificador de otro control:

<TextView
    android:id="@+id/labelFirstName"
    android:hint="Enter some text"
    android:labelFor="@+id/editFirstName" />
<EditText
    android:id="@+id/editFirstName"
    android:hint="Enter some text" />

Anuncio de accesibilidad

Use el método en cualquier control de vista para comunicar un cambio de estado o evento a los AnnounceForAccessibility usuarios cuando la accesibilidad esté habilitada. Este método no es necesario para la mayoría de las operaciones en las que la narración integrada proporciona comentarios suficientes, pero se debe usar donde la información adicional sería útil para el usuario.

El código siguiente muestra un ejemplo sencillo que llama a AnnounceForAccessibility :

button.Click += delegate {
  button.Text = string.Format ("{0} clicks!", count++);
  button.AnnounceForAccessibility (button.Text);
};

Cambio del enfoque Configuración

La navegación accesible se basa en controles que tienen el foco para ayudar al usuario a comprender qué operaciones están disponibles. Android proporciona una Focusable propiedad que puede etiquetar los controles como específicamente capaces de recibir el foco durante la navegación.

C#

Para evitar que un control obtenga el foco con C#, establezca la Focusable propiedad en false :

label.Focusable = false;

Diseño de AXML

En los archivos XML de diseño, establezca el android:focusable atributo :

<android:focusable="false" />

También puede controlar el orden de foco con los atributos nextFocusDown , , , , que normalmente se establecen en el diseño nextFocusLeftnextFocusRightnextFocusUp AXML. Use estos atributos para asegurarse de que el usuario puede navegar fácilmente por los controles de la pantalla.

Accesibilidad y localización

En los ejemplos anteriores, la sugerencia y la descripción del contenido se establecen directamente en el valor para mostrar. Es preferible usar valores en un archivo Strings.xml, como este:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="enter_info">Enter some text</string>
    <string name="save_info">Save data</string>
</resources>

El uso de texto de un archivo de cadenas se muestra a continuación en los archivos de diseño de C# y AXML:

C#

En lugar de usar literales de cadena en el código, busque valores traducidos de archivos de cadenas con Resources.GetText :

someText.Hint = Resources.GetText (Resource.String.enter_info);
saveButton.ContentDescription = Resources.GetText (Resource.String.save_info);

AXML

En el diseño, los atributos de accesibilidad XML hint como y se pueden establecer en un identificador de contentDescription cadena:

<TextView
    android:id="@+id/someText"
    android:hint="@string/enter_info" />
<ImageButton
    android:id=@+id/saveButton"
    android:src="@drawable/save_image"
    android:contentDescription="@string/save_info" />

La ventaja de almacenar texto en un archivo independiente es que se pueden proporcionar varias traducciones de idioma del archivo en la aplicación. Consulte la guía de localización de Android para obtener información sobre cómo agregar archivos de cadena localizados a un proyecto de aplicación.

Probar la accesibilidad

Siga estos pasos para habilitar TalkBack y Explore by Touch para probar la accesibilidad en dispositivos Android.

Es posible que deba instalar TalkBack desde Google Play si no aparece en Configuración Accesibilidad.