Android Lint içeriğiAçıklama uyarısı


130

Görüntü görüntüleme için "[Erişilebilirlik] Görüntüde eksik contentDescription özelliği" şeklinde uyarı alıyorum. android lint kullanırken

Bu ne anlama geliyor?


5
bu çok can sıkıcı bir uyarı - özellikle sadece yetenek için olan görüntüler için
Someone Somewhere

6
Bunu strings.xml'de tanımladım: <string name="none"></string> ve sonra kullandımandroid:contentDescription="@string/none"
Someone Somewhere

Yanıtlar:


170

android:contentDescriptionImageView'um için öznitelik ayarlayarak bu uyarıyı çözdüm

android:contentDescription="@string/desc"

ADT 16'daki Android Lint desteği, görüntü widget'larının bir contentDescription sağladığından emin olmak için bu uyarıyı atar.

Bu, görünümün içeriğini kısaca açıklayan metni tanımlar. Bu özellik, öncelikle erişilebilirlik için kullanılır. Bazı görünümlerin metinsel temsili olmadığından, bu öznitelik böyle sağlamak için kullanılabilir.

ImageViews ve ImageButtons gibi metinsel olmayan widget'lar, ekran okuyucuların ve diğer erişilebilirlik araçlarının kullanıcı arayüzünü yeterince tanımlayabilmesi için widget'ın metinsel bir tanımını belirtmek için contentDescription niteliğini kullanmalıdır.



49

Lint uyarılarını devre dışı bırakmak, daha sonra kolayca başınızı belaya sokar. Tüm Görüntü Görünümleriniz için yalnızca contentDescription öğesini belirtmeniz daha iyi olur. Bir tanıma ihtiyacınız yoksa, sadece şunu kullanın:

android:contentDescription="@null"

38

Diğer bir seçenek de uyarıyı ayrı ayrı bastırmaktır:

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

Misal:

<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" />

Yanlış - araçlar eklemek: ignore = "contentDescription" RelativeLayout'a "Attribute, Android ad alanı öneki eksik" derleme hatasına yol açtı
G. Kh.

3
Bu bir tutulma meselesidir. Sadece projenizi temizleyin. Ve şunlardan emin olun: xmlns: tools = " schemas.android.com/tools " da dahil edilmiştir!
Gunnar Bernstein

24

ContentDescription'ı eklemenizi tavsiye ederim.

android:contentDescription="@string/contentDescriptionXxxx"

ama gerçekçi olalım. Çoğu insan, erişilebilirlik için gerçek bilgileri korumaz. Yine de, çok az çabayla, engelli insanlara yardım etmek için bir şeyler uygulayabilirsiniz.

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

.

Görme engelli kullanıcının bilmesi gereken en önemli şey "Devam etmek için tıklamam gereken düğme nerede?"

Tıklanabilir her şey için contentDescriptionAction kullanın.

bilgi içeren görüntü için contentDescriptionContent'i kullanın (graph, textAsImage, ...)

tüm kullanıcı tarafından sağlanan içerik için contentDescriptionUserContent kullanın.

geri kalan her şey için contentDescriptionUseless kullanın.


1
Teşekkürler! Uyarıyı bastırmak yerine bu açıklamayı sağlamak her zaman en iyi seçimdir.
Vinicius Paldês

12

Sadece bir uyarı olduğu için onu bastırabilirsiniz. XML'nizin Grafik Düzenine gidin ve şunu yapın:

  1. Sağ üst köşedeki kırmızı düğmeye tıklayın

    görüntü açıklamasını buraya girin

  2. "Sorun Türünü Devre Dışı Bırak" ı seçin (örneğin)

    görüntü açıklamasını buraya girin


4
Doğru, sen yapabilirsiniz bunu bastırmak, ancak muhtemelen Android sağlar erişilebilirlik araçları itimat kullanıcıların uğruna, seçtikleri cevap tavsiyelerine uymalıdırlar.
Kyle Falconer

Budur!!! aradığım buydu. Bu cevap ve @ Gunnar Bernstein'ın cevabı beni aldı.
IronBlossom

3

Bu uyarıyı zarif bir şekilde bastırmak istiyorsanız (çünkü bu belirli ImageView için erişilebilirliğin gerekli olmadığından eminseniz), özel niteliği kullanabilirsiniz:

android:importantForAccessibility="no"

2

GradleDosyaya gidin (modül uygulaması), aşağıdaki kod bloğunu ekleyin

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

Artık uyarı yok! mutlu kodlama


mutlu kodlama, ancak bunun gerçekten ona güvenen insanlar için erişilebilirliğe zarar vereceğini unutmayın
Ben bir kurbağa

1

Metinsel olmayan widget'lar, görüntüyü metin olarak açıklamak için bazı şekillerde bir içerik açıklamasına ihtiyaç duyar, böylece ekran okuyucuları kullanıcı arayüzünü tanımlayabilir. Özelliği yok sayabilir veya özelliği tanımlayabilirsiniz.xmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"


1

ContentDescriptionAndroid erişilebilirliği için gerekli. Özellikle ekran okuyucu özelliği için. Android erişilebilirliğini desteklemiyorsanız kurulum Lint ile bunu göz ardı edebilirsiniz .

Yani sadece yaratın lint.xml.

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

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

</lint>

Ve onu appklasöre koyun .

görüntü açıklamasını buraya girin


1

Tamamen dekoratif olan grafik öğeler için, ilgili android: contentDescription XML özelliklerini "@null" olarak ayarlayın.

Uygulamanız yalnızca Android 4.1 (API düzeyi 16) veya sonraki sürümleri çalıştıran cihazları destekliyorsa, bunun yerine bu öğelerin android: importantForAccessibility XML özelliklerini "hayır" olarak ayarlayabilirsiniz.


android: importantForAccessibilty tam olarak aradığım şeydi. Teşekkür ederim!
Hrafn

Bu gerçekten doğru cevaptır ve en iyisi olmalıdır.
19'dan

0

ImageView'a sadece estetik amaçlı bir simge eklemek için ihtiyacım olduğu için tools:ignore="ContentDescription" xml dosyamda bulunan her ImageView içine .

Artık herhangi bir hata mesajı almıyorum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.