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 utilizar o Scanner de Acessibilidade e o 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 do 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 visualizações de texto editável.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 exibidos claramente e de fácil acesso no menu de contexto local. O Google sugere usar URLSpan ou a classe de conveniência Linkify para exibir hiperlinks na interface do usuário do aplicativo para aumentar 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 com o 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 o className com 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 ler o aplicativo sem tecnologia assistiva, você pode considerar editar a ordem das visualizações. Como pode ser complicado acertar e também pode incluir, acidentalmente, a adição de um loop infinito, aconselhamos a não editar a ordem de percurso. Para alterar a ordem de percurso, 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 para áreas visuais e de toque dos controles ativos, consulte a Regra de Tamanho do Alvo de Toque para nossa biblioteca Android.
Baixo Contraste
O contraste de cores entre o texto e seu fundo deve atender aos limiares mínimos de proporção da WCAG 2 AA. Aprenda sobre essa proporção e encontre conselhos de remediação para Baixo Contraste na Regra de Contraste de Cores para nossa biblioteca Android.
