Remediação do Scanner de Acessibilidade
Sua equipe está usando o Scanner de Acessibilidade do Android do Google?
Esta seção fornecerá conselhos de remediação para as regras que o scanner verifica. Leia mais sobre como aproveitar Acessibility Scanner e Axe DevTools Mobile.
Visite as diretrizes do Scanner de Acessibilidade do Google para a lista completa de verificações atuais, descrições e atualizações.
Rotulagem de Conteúdo
Rótulo de Item Ausente
O conteúdo dentro da visualização pode estar sem informações contextuais.
Para qualquer visualização que forneça informações ao usuário, forneça um dos seguintes para resolver este problema de acessibilidade:
android:contentDescription: Na maioria dos casos, adicionar uma descrição de conteúdo é tudo o que é necessário.android:hint: Podem ser adicionadas dicas para descrever o tipo de dados que o usuário deve inserir em áreas de texto editáveis.android:labelFor: Esta tag permitirá que você atribua uma visualização como rótulo para outra visualização.
No Compose, descrição de conteúdo e dica são encontrados como um parâmetro ao definir a visualização ou através da interface Modifier.
Imagens Decorativas
Imagens decorativas que não fornecem informações importantes podem ser marcadas como sem importância para acessibilidade.
Para XML:
android:importantForAccessibility="no"
Ou para Compose:
Image(
imageVector = Icons.Filled.AccountCircle,
contentDescription = null // decorative
)Item Rotulado com Tipo ou Estado
Uma de suas visualizações pode ter um estado redundante. O Android fornece visualizações padrão com estados como *ligado*, *desligado*, *marcado* ou *desmarcado*. Adicionar um estado à leitura pode resultar em uma experiência confusa.
Para resolver este problema de acessibilidade, certifique-se de que:
- As caixas de seleção tenham um rótulo associado para contexto
- Descrições de estado não são adicionadas à descrição da visualização
<TextView
android:id="@+id/edit_text_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:labelFor="@+id/example"
android:text="Check Label" />
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/example"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/with_text"/>Descrições de Itens Duplicadas
Várias visualizações dentro da hierarquia foram encontradas com descrições idênticas.
Isso não é uma falha do WCAG e pode haver casos em que isso é necessário. Se descrições de conteúdo forem duplicadas, certifique-se de que cada uma forneça contexto suficiente para que o usuário saiba qual seria o resultado de interagir com a visualização.
Propósito do Link Não Claro
Qualquer link deve conter texto suficiente para transmitir seu propósito. Ao usar descrições como "Clique Aqui", você deve garantir que o texto ao redor contenha informações suficientes para decifrar o propósito do link.
Implementação - Itens Clicáveis
Links Clicáveis
Os links devem ser claramente exibidos e facilmente acessados a partir do menu de contexto local. O Google sugere o uso de URLSpan ou da classe de conveniência Linkify para exibir hiperlinks na interface do usuário de um aplicativo, aumentando a probabilidade de que esses links sejam detectados e ativados.
Visualizações Clicáveis Duplicadas
Um dos elementos clicáveis em sua visualização se sobrepõe a outro elemento clicável. Você pode resolver este problema de acessibilidade de uma das seguintes maneiras:
- Movendo os elementos clicáveis para que eles não colidam ou se sobreponham.
- Se as visualizações não puderem ser movidas, certifique-se de que ambas as visualizações tenham uma área de toque de tamanho apropriado e que qualquer pessoa possa interagir com os elementos sem problema.
Rótulo de Item Editável
Campos editáveis devem ter um rótulo descrevendo o propósito do campo.
Um exemplo com EditText:
<TextView
android:id="@+id/edit_text_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:labelFor="@+id/edit_text"
android:text="Enter your username" />
<EditText
android:id="@+id/edit_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="Hint" />Um exemplo com CheckBox:
Utilize um TextView e associe-o ao elemento CheckBox:
val checkBox: CheckBox = ....... // Role: CheckBox
val label: TextView = ....... // Role: Label
label.setLabelFor(checkBox.getId()) // Associate the Checkbox with its NameTipo de Item Não Suportado
Parece que você pode ter uma visualização personalizada. Edite o AccessibilityNodeInfo para fornecer ao className um propósito apropriado para a visualização.
val frameLayout = findViewById<FrameLayout>(R.id.custom_view)
frameLayout.setAccessibilityDelegate(object : View.AccessibilityDelegate() {
override fun onInitializeAccessibilityNodeInfo(
host: View,
info: AccessibilityNodeInfo
) {
info.className = "ClassName"
info.contentDescription = "ContentDescription"
super.onInitializeAccessibilityNodeInfo(host, info)
}
})Ordem de Percurso
Se você consegue navegar pelas suas visualizações usando o TalkBack de maneira que faça sentido contextual, isso pode ser um falso positivo e não precisa ser tratado.
Se o TalkBack não fornecer as mesmas informações que a leitura do aplicativo sem tecnologia assistiva, você pode considerar editar a ordem das visualizações. Como pode ser complicado acertar e também pode envolver acidentalmente criar um loop infinito, aconselhamos contra a edição da ordem de travessia. Para alterar a ordem de travessia, utilize android:accessibilityTraversalBefore e android:accessibilityTraversalAfter.
Escalamento de Texto
Qualquer elemento de texto deve usar pixels escaláveis (sp) em vez de pixels independentes de densidade (dp) para permitir que o texto se ajuste à configuração de acessibilidade do tamanho da fonte do dispositivo.
Tamanho do Alvo de Toque
Para recomendações e conselhos de remediação sobre áreas visuais e clicáveis de controles ativos, consulte o Regra de Tamanho do Alvo de Toque para nossa biblioteca Android.
Baixo Contraste
O contraste de cor entre o texto e seu fundo deve atender aos limites mínimos da proporção WCAG 2 AA. Saiba mais sobre essa proporção e encontre conselhos de remediação para Baixo Contraste no Regra de Contraste de Cores para nossa biblioteca Android.
