Ekran okuyucu gibi erişilebilirlik hizmetlerinden yararlanan kullanıcılar, arayüzlerdeki öğeleri anlamak için içerik etiketlerini kullanır.
Bilginin bir öğe içinde grafik şeklinde verildiği bazı durumlarda içerik etiketleri, öğeyle ilişkilendirilen anlamın veya işlemin metin açıklamasını sağlayabilir.
Kullanıcı arayüzündeki öğelerde içerik etiketleri yoksa bazı kullanıcıların kendilerine sunulan bilgileri anlamaları veya arayüzde işlem yapmaları zorlaşabilir.
Kullanım
GörünümBir arayüzde bazı View
öğesi türleri kullanıldığında, bunların ilgili View
öğesiyle ilişkilendirilen amacı veya işlemi açıklayan içerik etiketleri sağlaması gerekir.
İçerik etiketlerini sağlama
android:contentDescription
Bilgiyi grafik şeklinde veren ImageView
, ImageButton
, CheckBox
veya başka bir View
öğesi kullanırken android:contentDescription
özelliği ile söz konusu View
öğesi için bir içerik etiketi sağlayın.
İçerik etiketi bazen sadece çalışma zamanında mevcut olan bilgilere bağlı olabilir veya View
öğesinin anlamı zaman içinde değişebilir. Örneğin "Çal" düğmesi, müzik çalarken "Duraklat" düğmesine dönüşebilir. Bu gibi durumlarda, içerik etiketini gerektiğinde güncellemek için View#setContentDescription(CharSequence contentDescription)
öğesini kullanın.
Genellikle erişilebilirlik hizmeti bir ViewGroup
tanımladığında, alt View
öğelerindeki içerik etiketlerini birleştirir. Bu davranışı geçersiz kılmak ve ilgili öğe ile bu öğenin odaklanılabilir olmayan alt View
öğelerine kendi açıklamanızı eklemek istediğinizi belirtmek için ViewGroup
'ta bir contentDescription
ayarlayın. ViewGroup
üzerinde ayarlandıklarında bir contentDescription
içindeki alt View
öğelerinden içerik etiketleri eklemeniz gerekebilir.
android:hint
EditText
veya düzenlenebilir TextView
öğelerinde, metin alanının amacını belirtmek için bir android:hint
özelliği kullanın. android:contentDescription
, düzenlenebilir View
öğeleri için içerik etiketi olarak kullanılmamalıdır.
android:labelFor
android:labelFor
özelliğini kullanarak bir View
öğesinin, başka bir View
öğesi için içerik etiketi görevi görmesi gerektiğini belirtebilirsiniz.
İçerik etiketlerinin gerekmediği durumlar
Bazı durumlarda, içerik etiketlerinin özel olarak sağlanması gerekmez:
TextView
öğesinde (veya alt sınıflarında) oluşturulan metin, erişilebilirlik hizmetlerine otomatik olarak sağlanır. Genellikle ek içerik etiketlerine gerek duyulmaz.- Süsleme amaçlı resimler veya grafik şeklinde anlamlı bilgi sunmayan resimler içerik etiketi gerektirmez. Bu durumlarda,
"@null"
değerine sahip birandroid:contentDescription
veya"no"
değerine sahip birandroid:importantForAccessibility
özelliği ayarlayın.
Daha fazla bilgi edinmek için Android Geliştirici Eğitimi ve API Kılavuzları sayfalarındaki içerik etiketlerinin uygulanmasıyla ilgili bilgileri okuyun.
Bir arayüzde bazı composable'lar kullanıldığında, bunların ilgili composable ile ilişkilendirilen amacı ya da işlemi açıklayan içerik etiketleri içermesi gerekir.
İçerik etiketlerini sağlama
İçerik açıklamaları
Grafik şeklinde bilgi sağlayan Image
, Icon
veya diğer düşük seviye composable'lara içerik etiketi sağlamak için içerik açıklamasını ayarlayın.
- İçerik etiketi çalışma zamanı bilgisine bağlı olabilir ve composable'ın anlamı değişebilir. Örneğin "Çal" düğmesi, müzik çalarken "Duraklat" düğmesine dönüşebilir.
- Bu gibi durumlarda State'i kullanarak Compose'un içerik açıklamalarındaki değişiklikleri gözlemlemesini ve yeni bir değerle yeniden oluşturmasını sağlayın.State ve Jetpack Compose'u kullanmayı öğrenin.
- Bazı durumlarda öğeleri, içerik etiketlerini alt öğeleriyle birleştiren tek bir odaklanılabilir öğede birleştirmek uygun olabilir.Öğeleri birleştirmeyi öğrenin.
Etiket parametresi
TextField
gibi bazı composable'lar isteğe bağlı label
parametresini destekler. Etiket ayarlandığında öğe, label
parametresine geçirilen composable'ı gösterir. Erişilebilirlik hizmetleri, composable'ı açıklamak için kullanılabilir.
İçerik etiketlerinin gerekmediği durumlar
Bazı durumlarda, içerik etiketleri eklenmemelidir:
Text
olarak üretilen veyaText
öğesini içeren diğer composable'lar, otomatik olarak erişilebilirlik hizmetlerine sağlanır.- Süsleme amaçlı resimler veya grafiksel olarak anlamlı bilgi sunmayan resimler.
- Bu durumlarda,
contentDescription
parametresini veyaModifier.semantics#contentDescription
özelliğininull
olarak ayarlayın ya daModifier#clearAndSetSemantics
'i kullanın.
- Bu durumlarda,
Tasarım
Kullanıcı arayüzü tasarlarken, grafiksel olarak sunulan içeriğin erişilebilirlik hizmetlerini kullananlar için nasıl etiketlenmesi gerektiğini dikkatli bir şekilde düşünün. İçerik etiketleri şu ilkelere uygun olmalıdır:
- Bir öğeyle ilişkilendirilen anlamı veya işlemi kısa ve anlaşılır bir şekilde açıklamalıdır.
- İçerik etiketi, öğenin türünü veya durumunu içermemelidir.
- Öğe bir işlemle ilişkilendirilmişse grafiksel gösterim yerine işlemi açıklamalıdır.
- Kullanıcıya ilgili öğeyle spesifik olarak nasıl etkileşimde bulunacağını bildirmemelidir.
Daha fazla bilgi edinmek için Materyal Tasarım'da Erişilebilirlikle İlgili Yazım Kılavuzu'nu okuyun.
Test
Bir uygulamanın kullanıcı arayüzünde içerik etiketlerinin eksiksiz olduğunu manuel olarak doğrulamak için:
- TalkBack'i açın.
- Uygulamayı açın.
- Erişilebilirlik odağını ekrandaki tüm öğelere taşımak için doğrusal gezinme hareketlerini kullanın.
- TalkBack odağı bir öğeye taşır ancak ilgili öğenin anlamlı bir sunumunu söylemezse veya "etiketsiz" iletisini söylerse söz konusu öğenin içerik etiketi olmayabilir.
Android'in otomatik test araçları eksik içerik etiketlerini algılayabilir. Uygulamanızı cihazda manuel olarak test etmek için Android için Erişilebilirlik Tarayıcısı'nı kullanabilirsiniz. Otomatik testler için Espresso ve Robolectric'te erişilebilirlik kontrolünü etkinleştirin.