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" />
LabelFor vincula campos de entrada com rótulos
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 nextFocusDown
atributos , 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.