Remediação do Scanner de Acessibilidade

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

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.
note

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.

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

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 Name

Tipo 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.