XML'de 'Resimde eksik contentDescription özelliği'


222

[Erişilebilirlik] hakkında tutulma Eclipse görüntüdeki contentDescription özniteliği eksik . Bu uyarı ImageViewaşağıdaki XML kodunda 5. satırda (beyan ) gösterilir.

Uygulamamı oluşturup çalıştırdığınızda bu herhangi bir hata yapmaz. Ama bu uyarıyı neden aldığımı gerçekten bilmek istiyorum.

Bu benim XML dosyam:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/contact_entry_image"
        android:src="@drawable/ic_launcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <TextView
        android:id="@+id/contact_entry_text"
        android:text=""
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        />

</LinearLayout>

Lütfen bu konuda bana yardımcı olun ve okuduğunuz için teşekkürler.


6
yeni ADT sürümü öneri android:contentDescriptionbu özelliği ekleyin imageview, sadece bir öneri, bunu göz ardı edebilirsiniz, derleme hatası yapmayın, ayrıca kontrol edebilirsinizhttp://developer.android.com/reference/android/view/View.html#attr_android:contentDescription
idiottiger 16:12

evet doğru
Rahul Kushwaha

Yanıtlar:


269

Çözüm için bu bağlantıyı izleyin: Android Lint içeriği

Android: contentDescription için ImageView özelliğini ayarlayarak bu uyarıyı çözdük

android: contentDescription = "string / desc @"

ADT 16'daki Android Lint desteği, görüntü widget'larının bir içerik 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 özellik bunu sağlamak için kullanılabilir.

ImageViews ve ImageButtons gibi metinsel olmayan widget'lar, ekran okuyucularının ve diğer erişilebilirlik araçlarının kullanıcı arabirimini yeterince tanımlayabileceği şekilde widget'ın metinsel bir tanımını belirtmek için contentDescription özniteliğini kullanmalıdır.

Açıklama için bu link: Erişilebilirlik, Etkisi ve Kalkınma Kaynakları

Birçok Android kullanıcısının Android cihazlarıyla farklı şekillerde etkileşim kurmalarını gerektiren engelleri vardır. Bunlar, bir dokunmatik ekranı tam olarak görmelerini veya kullanmasını engelleyen görsel, fiziksel veya yaşa bağlı engelleri olan kullanıcıları içerir.

Android, bu kullanıcıların cihazlarında daha kolay gezinmelerine yardımcı olmak için metin-konuşma, dokunsal geri bildirim, topunu ve deneyimlerini artıran D-pad navigasyonu gibi erişilebilirlik özellikleri ve hizmetleri sunar. Android uygulama geliştiricileri, uygulamalarını daha erişilebilir hale getirmek ve kendi erişilebilirlik hizmetlerini oluşturmak için bu hizmetlerden yararlanabilir.

Bu kılavuz uygulamanızı erişilebilir hale getirmek içindir: Uygulamaları Daha Erişilebilir Hale Getirmek

Özellikle çerçeve tarafından sağlanan kullanıcı arabirimi bileşenlerini kullandığınızda uygulamanızın tüm kullanıcılar tarafından erişilebilir olmasını sağlamak nispeten kolaydır. Bu standart bileşenleri uygulamanız için yalnızca kullanıyorsanız, uygulamanızın erişilebilir olmasını sağlamak için yalnızca birkaç adım yeterlidir:

  1. Senin etiketleyin ımagebutton , ImageView , EditText , CheckBox'ı kullanarak ve diğer kullanıcı arabirimi denetimleri contentDescription: android niteliğini.

  2. Trackball veya D-pad gibi bir yön denetleyicisiyle tüm kullanıcı arabirimi öğelerinize erişilebilir olmasını sağlayın.

  3. TalkBack ve Dokunarak Keşfet gibi erişilebilirlik hizmetlerini açarak uygulamanızı test edin ve uygulamanızı yalnızca yön denetimlerini kullanarak kullanmayı deneyin.


92
Bir önemli not daha! Bu durumda, görüntü tamamen dekoratif gibi görünür ve kullanıcıya ek bilgi sağlamaz. Örneğin, kullanıcıya "Kişi resmi" ile konuşmak istemezsiniz, ancak bu metni başka hiçbir yerde göstermezseniz "Bob'un profil fotoğrafı" nı konuşmak isteyebilirsiniz. Bir görüntünün kullanıcıyla konuşulmaması gerekiyorsa android: contentDescription = "@ null" olarak ayarlayabilirsiniz ve uyarı ortadan kalkar.
alanv

1
@alanv: harika yorum. Genel olarak önerildiği gibi uyarıyı tamamen devre dışı bırakmaktan çok daha iyi.
ChiefTwoPencils

13
Aslında android sanmıyorum: contentDescription = "@ null" en iyi çözümdür. Araçları kullanıyorum: ignore = "ContentDescription" ne olması gerekiyordu. Kök düzeninize xmlns: tools = " schemas.android.com/tools " eklediğinizden emin olun .
Sotti

böyle güzel bir belge sağladığınız için teşekkür ederim. duvar kağıdı galeri uygulaması gibi resimleriniz olduğunda, tüm resimler için içerik açıklaması eklemek uygun mu? ayrıca uygulama performansını da etkileyebilir mi?
Rahul Mandaliya

67

Ekle android:contentDescription="@string/description"sizin ImageView (statik veya dinamik). Lütfen mesajı göz ardı etmeyin veya filtreleyin, çünkü engelleri nedeniyle alternatif giriş yöntemleri kullanan kişiler için yararlıdır (TalkBack, Tecla Access Shield vb. Gibi).


@ Jeroen- Ne zaman açıklama ekledi, diyor ki: "source @ string / loginText çözülemedi" - Neden bu?
Jamal Zafar

XML dizesinde bir loginText dizesi var mı?
Praveen

1
@JamalZafar string.xml içinde loginText adıyla bir dize oluşturun
Ayush Goyal

36

Güncellenmiş:

Yorumlarda belirtildiği gibi, açıklamayı null değerine ayarlamak görüntünün tamamen dekoratif olduğunu ve TalkBack gibi ekran okuyucular tarafından anlaşıldığı anlamına gelir.

Eski cevap, artık bu yanıtı desteklemiyorum:

Uyarıdan nasıl kaçınacağını arayan tüm insanlar için:

Sanmıyorum android:contentDescription="@null"En iyi çözüm .

kullanıyorum tools:ignore="ContentDescription" olması gereken bu kullanıyorum.

xmlns:tools="http://schemas.android.com/tools"Kök düzeninize dahil ettiğinizden emin olun .


1
Google önerilen da zaten bu, çünkü bu bir upvoted edilmelidir
Le Dinh Nhat Khanh

4
@nullİçerik olarak kullanmak Açıklama, bu görüntünün tamamen dekoratif olduğunu açıkça ifade etmenin bir yoludur. Uyarıyı görmezden gelmek doğru çözüm değildir.
karl

1
Kullanma @null, TalkBack'e görüntünün dekoratif olduğunu bildirir. @nullTalkBack'i bilgilendirdiğinden, eksik olduğunu ve orada olması gerektiğini söylemek yerine uyarıyı göz ardı etmemelisiniz.
Ab,

10

Ekle

tools:ignore="ContentDescription"

Resminize. xmlns:tools="http://schemas.android.com/tools" .Kök düzeninizde olduğundan emin olun .


1
+1. Bu, Android Studio'nun bu sorun için düzeltmesidir (kod analizini gerçekleştirdiğinizde, "
Lint'i bastırın

9

Uyarı gerçekten sinir bozucu ve birçok (çoğu!) Durumda içerik yok Çeşitli dekoratif ImageViews için açıklama gerekli. Sorunu çözmenin en radikal yolu Lint'e bu kontrolü görmezden gelmesini söylemektir. Eclipse'de, Tercihler'deki "Android / Lint Hata Denetimi" ne gidin, "contentDescription" 'u bulun ("Erişilebilirlik" grubundadır) ve "Önem Derecesi:" seçeneğini Yoksay olarak değiştirin.


9
Bu uyarıyı dikkate almayın. Diğerlerinin işaret ettiği gibi, erişilebilirlik sadece dekoratif bir görüntü olsa bile önemlidir. Bu istenilen contentDescription eklemek için hiç önemli değil
JamesC

1
Uygulamanız içerik açıklamalarıyla bile erişilemeyecek bir uygulama ise uyarıyı da göz ardı edebilirsiniz. Örneğin, contentDescriptionoynayabilmek için görme gerektiren bir oyunda niye uğraşıyorsunuz ?
CorayThan

Evet, bu bir radikal seçim; Peki amacının farkında olan ve buna uymak isteyen insanlar ne yapar? Ben bu özel durumda, "en" vakaları unutmaya cesaret; bu "çoğu" insanın kör olmadığı için gereksiz bir uyarı olduğu anlamına gelmekte midir? Resimlerinizin "çoğunun" böyle bir içeriğe ihtiyacı yoksa - iyi, uyarıyı devre dışı bırakın, ancak mantıklı olacağı yere ekleyin. Biraz yardımcı olmak uzun bir yol kat edebilir.
ChiefTwoPencils

9

Hiç umursamıyorsanız bunu yapın:

    android:contentDescription="@null"

Kabul edilen çözümleri tavsiye etmeme rağmen, bu bir hack: D


3
Aslında android sanmıyorum: contentDescription = "@ null" en iyi çözümdür. Araçları kullanıyorum: ignore = "ContentDescription" ne olması gerekiyordu. Kök düzeninize xmlns: tools = " schemas.android.com/tools " eklediğinizden emin olun .
Sotti

Kimse bunu söylemedi. Yorumu tekrar okuyun. Uyarıyı görmezden gelirsiniz, böylece sağladığınız çözüm kesinlikle daha kötüdür. En kabul edilen cevabı tekrar okuyun.
alap

5

İleride, tamamen dekoratif grafik öğeler için en iyi çözüm aşağıdakileri kullanmaktır:

android:importantForAccessibility="no"

Min SDK sürümünüz en az 16 ise, daha düşük sürümleri çalıştıran cihazlar bu özelliği yoksayacaktır.

Eski sürümleri desteklemeniz durumunda kalmalısınız (diğerlerinin de belirttiği gibi):

android:contentDescription="@null"

Kaynak: https://developer.android.com/guide/topics/ui/accessibility/apps#label-elements


2

Bu uyarı, uygulamanızın erişilebilirliğini artırmaya çalışır.

Tüm projede eksik içerik açıklaması uyarısını devre dışı bırakmak için bunu uygulama modülü build.gradle'ınıza ekleyebilirsiniz.

android {

    ...

    lintOptions {
        disable 'ContentDescription'
    }
}

0

Görüntü açıklaması tanımlanmadığı için size uyarı veriyor.

Bu uyarıyı aşağıda Strings.xml ve activity_main.xml dosyalarına ekleyerek çözebiliriz

Bu satırı aşağıdaki Strings.xml dosyasına ekleyin

<string name="imgDescription">Background Picture</string>
you image will be like that:
<ImageView
        android:id="@+id/imageView2"
        android:lay`enter code hereout_width="0dp"
        android:layout_height="wrap_content"
        android:contentDescription="@string/imgDescription"
        app:layout_editor_absoluteX="0dp"
        app:layout_editor_absoluteY="0dp"
        app:srcCompat="@drawable/background1"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp" />

Ayrıca bu satırı activity_main.xml dosyasına ekleyin

android:contentDescription="@string/imgDescription"

strings.xml

<resources>
    <string name="app_name">Saini_Browser</string>
    <string name="SainiBrowser">textView2</string>
    <string name="imgDescription">BackGround Picture</string>
</resources>
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.