Partilhar via


Acessibilidade no Android

Esta página descreve como usar as APIs de Acessibilidade do Android para criar aplicativos de acordo com a lista de verificação de acessibilidade. Consulte as páginas de acessibilidade do iOS e acessibilidade do OS X para outras APIs de plataforma.

Descrevendo elementos da interface do usuário

O Android fornece uma ContentDescription propriedade usada pelas APIs de leitura de tela para fornecer uma descrição acessível da finalidade do controle.

A descrição do conteúdo pode ser definida em C# ou no arquivo de layout AXML.

C#

A descrição pode ser definida no código para qualquer cadeia de caracteres (ou um recurso de cadeia de caracteres):

saveButton.ContentDescription = "Save data";

Layout do AXML

Em layouts XML, use o android:contentDescription atributo :

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

Usar Dica para TextView

Para EditText controles e TextView para entrada de dados, use a Hint propriedade para fornecer uma descrição do que a entrada é esperada (em vez de ContentDescription). Quando algum texto tiver sido inserido, o texto em si será "lido" em vez da dica.

C#

Defina a Hint propriedade no código:

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

Layout do AXML

Em arquivos de layout XML, use o android:hint atributo :

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

Para associar um rótulo a um controle de entrada de dados, use a LabelFor propriedade para

C#

Em C#, defina a LabelFor propriedade como a ID do recurso do controle que este conteúdo descreve (normalmente, essa propriedade é definida em um rótulo e faz referência a algum outro controle de entrada):

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

Layout do AXML

No XML de layout, use a android:labelFor propriedade para fazer referência ao identificador de outro controle:

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

Anunciar para acessibilidade

Use o AnnounceForAccessibility método em qualquer controle de exibição para comunicar um evento ou status alterar para os usuários quando a acessibilidade estiver habilitada. Esse método não é necessário para a maioria das operações em que a narração interna fornece comentários suficientes, mas deve ser usado onde informações adicionais seriam úteis para o usuário.

O código a seguir mostra um exemplo simples chamando AnnounceForAccessibility:

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

Alterando as configurações de foco

A navegação acessível depende de controles com foco para ajudar o usuário a entender quais operações estão disponíveis. O Android fornece uma Focusable propriedade que pode marcar controles como especificamente capazes de receber foco durante a navegação.

C#

Para impedir que um controle ganhe foco com C#, defina a Focusable propriedade como false:

label.Focusable = false;

Layout do AXML

Em arquivos XML de layout, defina o android:focusable atributo :

<android:focusable="false" />

Você também pode controlar a ordem de foco com os nextFocusDownatributos , nextFocusLeft, nextFocusRight, nextFocusUp normalmente definidos no AXML de layout. Use esses atributos para garantir que o usuário possa navegar facilmente pelos controles na tela.

Acessibilidade e localização

Nos exemplos acima, a dica e a descrição do conteúdo são definidas diretamente para o valor de exibição. É preferível usar valores em um arquivo 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>

O uso de texto de um arquivo de cadeias de caracteres é mostrado abaixo nos arquivos de layout C# e AXML:

C#

Em vez de usar literais de cadeia de caracteres no código, procure valores traduzidos de arquivos de cadeias de caracteres com Resources.GetText:

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

AXML

No layout, atributos de acessibilidade XML como hint e contentDescription podem ser definidos como um identificador de cadeia de caracteres:

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

O benefício de armazenar texto em um arquivo separado é que várias traduções de idioma do arquivo podem ser fornecidas em seu aplicativo. Consulte o Guia de localização do Android para saber como adicionar arquivos de cadeia de caracteres localizados a um projeto de aplicativo.

Testando a acessibilidade

Siga estas etapas para habilitar o TalkBack e o Explore by Touch para testar a acessibilidade em dispositivos Android.

Talvez seja necessário instalar o TalkBack do Google Play se ele não aparecer em Configurações > Acessibilidade.