Conteúdo do Android Lint

130

Estou recebendo um aviso como "[Acessibilidade] Falta o atributo contentDescription na imagem" para visualização de imagem. enquanto estiver usando o Android Lint

O que isso significa?

Santhosh Shettigar
fonte
5
este é como um aviso chato - especialmente para imagens que são apenas para flair
alguém em algum lugar
6
Eu defini isso no strings.xml: <string name="none"></string> e então useiandroid:contentDescription="@string/none"
Someone Somewhere

Respostas:

170

Resolvido esse aviso, definindo o atributo android:contentDescriptionpara o meu ImageView

android:contentDescription="@string/desc"

O suporte do Android Lint no ADT 16 lança esse aviso para garantir que os widgets de imagem forneçam uma descrição do conteúdo.

Isso define o texto que descreve brevemente o conteúdo da exibição. Esta propriedade é usada principalmente para acessibilidade. Como algumas visualizações não têm representação textual, esse atributo pode ser usado para fornecê-las.

Widgets não textuais como ImageViews e ImageButtons devem usar o atributo contentDescription para especificar uma descrição textual do widget, para que os leitores de tela e outras ferramentas de acessibilidade possam descrever adequadamente a interface do usuário.

Santhosh Shettigar
fonte
4
você pode ler mais sobre isso e testá-lo sozinho, acessando: android-developers.blogspot.com/2012/04/… e developer.android.com/guide/topics/ui/accessibility/…
desenvolvedor android
49

Desabilitar os avisos de cotão facilmente causará problemas mais tarde. É melhor apenas especificar contentDescription para todos os seus ImageViews. Se você não precisar de uma descrição, use:

android:contentDescription="@null"
Dane White
fonte
38

Outra opção é suprimir o aviso individualmente:

xmlns:tools="http://schemas.android.com/tools"  (usually inserted automatically)
tools:ignore="contentDescription"

Exemplo:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    tools:ignore="contentDescription" >

       <ImageView
            android:layout_width="50dp"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:padding="5dp"
            android:src="@drawable/icon" />
Gunnar Bernstein
fonte
Incorreto - adicionando ferramentas: ignore = "contentDescription" no RelativeLayout levou ao erro de compilação "O atributo está ausente no prefixo do namespace do Android"
G. Kh.
3
Este é um problema do eclipse. Apenas limpe seu projeto. E verifique se: xmlns: tools = " schemas.android.com/tools " também está incluído!
Gunnar Bernstein
24

Eu recomendo que você adicione o contentDescription.

android:contentDescription="@string/contentDescriptionXxxx"

mas, sejamos realistas. A maioria das pessoas não mantém literalmente a acessibilidade. Ainda assim, com pouco esforço, você pode implementar algo para ajudar as pessoas com deficiência.

<string name="contentDescriptionUseless">deco</string>
<string name="contentDescriptionAction">button de action</string>
<string name="contentDescriptionContent">image with data</string>
<string name="contentDescriptionUserContent">image from an other user</string>

.

A coisa mais importante que o usuário cego precisará saber é "Onde está o botão no qual preciso clicar para continuar"

Use contentDescriptionAction para qualquer coisa clicável.

use contentDescriptionContent para imagem com informações (gráfico, textAsImage, ...)

use contentDescriptionUserContent para todo o conteúdo fornecido pelo usuário.

use contentDescriptionUseless para todo o resto.

Cristo
fonte
1
Obrigado! É sempre a melhor opção para fornecer essa descrição em vez de suprimir o aviso.
Vinicius Paldês
12

Como é apenas um aviso, você pode suprimi-lo. Vá para o layout gráfico do seu XML e faça o seguinte:

  1. Clique no botão vermelho no canto superior direito

    insira a descrição da imagem aqui

  2. Selecione "Desativar tipo de problema" (por exemplo)

    insira a descrição da imagem aqui

Sergio Carneiro
fonte
4
É verdade que você pode suprimi-lo, mas provavelmente deve seguir os conselhos da resposta selecionada, para o bem dos usuários que confiam nas ferramentas de acessibilidade que o Android fornece.
Kyle Falconer
É isso!!! isso é o que eu estava procurando. Esta resposta e a resposta de @Gunnar Bernstein me pegou.
IronBlossom
3

Se você deseja suprimir esse aviso de maneira elegante (porque você tem certeza de que a acessibilidade não é necessária para este ImageView específico), você pode usar o atributo especial:

android:importantForAccessibility="no"
Alexander Bernat
fonte
2

Vá para o Gradlearquivo (módulo de aplicativo), adicione o bloco de código abaixo

android {
    ... 
    lintOptions {
        disable 'ContentDescription'
    }
    ...
}

Não há mais aviso! codificação feliz

GianhTran
fonte
codificação feliz, mas observe que isso prejudicará a acessibilidade das pessoas que realmente confiam nela
eu sou um dragão sapo
1

Os widgets não textuais precisam de uma descrição de conteúdo de algumas maneiras para descrever textualmente a imagem, para que as telas sejam capazes de descrever a interface do usuário. Você pode ignorar a propriedade ou definir a propriedadexmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"

Fokou Franklin
fonte
1

ContentDescriptionnecessário para a acessibilidade do Android. Especialmente para o recurso de leitor de tela. Se você não suporta a acessibilidade do Android, pode ignorá-lo com a instalação do Lint .

Então, basta criar lint.xml.

<?xml version="1.0" encoding="UTF-8"?>
<lint>

    <issue id="ContentDescription" severity="ignore" />

</lint>

E coloque-o na apppasta

insira a descrição da imagem aqui

Yvgen
fonte
1

Para elementos gráficos puramente decorativos, defina seus respectivos atributos XML android: contentDescription como "@null".

Se seu aplicativo suportar apenas dispositivos com Android 4.1 (nível 16 da API) ou superior, você poderá definir os atributos XML do android: importantForAccessibility como "não"

AnhSang
fonte
android: importantForAccessibilty era exatamente o que eu estava procurando. Obrigado!
Hrafn
Esta é realmente a resposta correta e deve ser a primeira.
Lsrom 12/06/19
0

Desde que eu preciso do ImageView para adicionar um ícone apenas para estética que eu adicionei tools:ignore="ContentDescription"dentro de cada ImageView que eu tinha no meu arquivo xml.

Não estou mais recebendo nenhuma mensagem de erro

MikNik
fonte