स्क्रीन रीडर जैसी सुलभता सेवाओं का इस्तेमाल करने वाले लोग, किसी यूज़र इंटरफ़ेस के एलिमेंट का मतलब समझने के लिए, कॉन्टेंट लेबल पर निर्भर होते हैं.
यही वजह है कि इंटरफ़ेस के बारे में जानकारी देने के लिए, ग्राफ़िक वाले एलिमेंट का इस्तेमाल करते समय, उस एलिमेंट में कॉन्टेंट लेबल जोड़ने चाहिए. इससे टेक्स्ट की मदद से एलिमेंट का मतलब समझाने या उससे जुड़ी कार्रवाई के बारे में जानकारी देने में मदद मिलती है.
अगर किसी यूज़र इंटरफ़ेस के एलिमेंट में कॉन्टेंट लेबल नहीं जोड़े जाते, तो कुछ लोगों को एलिमेंट में दी गई जानकारी को समझने या इंटरफ़ेस पर कार्रवाइयां करने में परेशानी होती है.
लागू करने का तरीका
Viewकिसी इंटरफ़ेस में कुछ टाइप के Views
का इस्तेमाल करते समय, उनमें कॉन्टेंट लेबल जोड़ने चाहिए. इनकी मदद से, उस View
को जोड़ने के मकसद या उससे जुड़ी कार्रवाई के बारे में जानकारी दी जा सकती है.
कॉन्टेंट लेबल जोड़ने का तरीका
android:contentDescription
अगर इंटरफ़ेस में जानकारी देने के लिए ग्राफ़िक वाला एलिमेंट, जैसे कि ImageView
, ImageButton
, CheckBox
या कोई अन्य View
शामिल करना है, तो उस View
में कॉन्टेंट लेबल जोड़ें. इसके लिए, android:contentDescription
एट्रिब्यूट का इस्तेमाल करें.
कभी-कभी एलिमेंट का कॉन्टेंट लेबल, रनटाइम के दौरान दिखने वाली जानकारी पर निर्भर करता है. इसी तरह, View
के लिए जोड़े गए कॉन्टेंट लेबल का मतलब, समय के साथ अपडेट हो सकता है. उदाहरण के लिए, जब संगीत चल रहा होता है, तो 'चलाएं' बटन 'रोकें' बटन में अपडेट हो जाता है. इन मामलों में, कॉन्टेंट लेबल को सही समय पर अपडेट करने के लिए, View#setContentDescription(CharSequence contentDescription)
का इस्तेमाल करें.
आम तौर पर, जब कोई सुलभता सेवा किसी ViewGroup
के बारे में बताती है, तो वह अपने ब्यौरे में उस व्यू ग्रुप के चाइल्ड Views
के कॉन्टेंट लेबल को भी शामिल कर लेती है. इस व्यवहार को बदला जा सकता है. साथ ही, उस व्यू ग्रुप और उसके फ़ोकस नहीं किए जा सकने वाले चाइल्ड Views
के लिए भी ब्यौरा जोड़ा जा सकता है. इसके लिए, ViewGroup
पर contentDescription
सेट करें. अगर किसी ViewGroup
पर contentDescription
सेट हो, तो आपको चाइल्ड Views
के कॉन्टेंट लेबल शामिल करने पड़ सकते हैं.
android:hint
EditTexts
या बदलाव किए जा सकने वाले TextViews
के लिए, android:hint
का इस्तेमाल करें. इसकी मदद से, टेक्स्ट फ़ील्ड शामिल करने का मकसद बताया जा सकता है. बदले जा सकने वाले Views
के कॉन्टेंट लेबल के तौर पर, android:contentDescription
का इस्तेमाल नहीं करना चाहिए.
android:labelFor
android:labelFor
एट्रिब्यूट की मदद से बताएं कि किसी एक View
को किसी दूसरे View
के कॉन्टेंट लेबल के तौर पर इस्तेमाल किया जा सकता है.
ऐसे एलिमेंट जिनके लिए कॉन्टेंट लेबल की ज़रूरत नहीं होती
इनके लिए कॉन्टेंट लेबल नहीं जोड़ने चाहिए:
TextView
(या उसके सब-क्लास) में रेंडर किया जाने वाला टेक्स्ट एलिमेंट. सुलभता सेवाओं को इस एलिमेंट के लिए लेबल अपने-आप मिल जाता है. यही वजह है कि अतिरिक्त कॉन्टेंट लेबल जोड़ने की ज़रूरत नहीं होती.- सजावटी इमेज या जिन इमेज का इस्तेमाल ज़रूरी जानकारी देने के लिए नहीं किया जाता उनमें, कॉन्टेंट लेबल जोड़ने की ज़रूरत नहीं होती. इन मामलों में,
android:contentDescription
एट्रिब्यूट को"@null"
याandroid:importantForAccessibility
एट्रिब्यूट को"no"
पर सेट करें.
कॉन्टेंट लेबल जोड़ने के बारे में ज़्यादा जानकारी पाने के लिए, Android Developer की ट्रेनिंग से जुड़ा दस्तावेज़ और एपीआई गाइड पढ़ें.
किसी इंटरफ़ेस में कुछ टाइप के कंपोज़ेबल का इस्तेमाल करते समय, उनमें कॉन्टेंट लेबल जोड़ने चाहिए. इनकी मदद से, उन कंपोज़ेबल को शामिल करने के मकसद और उनसे जुड़ी कार्रवाई के बारे में जानकारी दी जा सकती है.
कॉन्टेंट लेबल जोड़ने का तरीका
कॉन्टेंट का ब्यौरा
किसी Image
, Icon
या ग्राफ़िक की मदद से जानकारी देने वाले लो-लेवल कंपोज़ेबल में कॉन्टेंट लेबल जोड़ने के लिए, कॉन्टेंट का ब्यौरा सेट करें.
- कंपोज़ेबल का कॉन्टेंट लेबल, रनटाइम के दौरान दिखने वाली जानकारी पर निर्भर करता है और इसका मतलब समय के साथ अपडेट भी हो सकता है. उदाहरण के लिए, जब संगीत चल रहा होता है, तो 'चलाएं' बटन 'रोकें' बटन में अपडेट हो जाता है.
- इन मामलों में, स्टेट (समय के साथ बदलने वाली वैल्यू) का इस्तेमाल करें. इससे Compose, कॉन्टेंट के ब्यौरे में होने वाले बदलावों को समझ सकेगा और उसमें नई वैल्यू डाल सकेगा. Jetpack Compose में स्टेट इस्तेमाल करने का तरीका जानें.
- कुछ मामलों में, कई एलिमेंट को मर्ज करके फ़ोकस करने लायक सिंगल एलिमेंट बनाया जा सकता है. इसमें डिसेंडेंट एलिमेंट के कॉन्टेंट लेबल जोड़े जा सकते हैं. एलिमेंट मर्ज करने का तरीका जानें.
लेबल पैरामीटर
TextField
जैसे कंपोज़ेबल में label
पैरामीटर जोड़ा जा सकता है. लेबल सेट होने पर एलिमेंट, label
पर पास किया गया कंपोज़ेबल दिखाता है. कंपोज़ेबल का ब्यौरा देने के लिए, सुलभता सेवाओं का इस्तेमाल किया जा सकता है.
ऐसे एलिमेंट जिनके लिए कॉन्टेंट लेबल की ज़रूरत नहीं होती
इनके लिए कॉन्टेंट लेबल नहीं जोड़ने चाहिए:
Text
में रेंडर किया जाने वाला टेक्स्ट एलिमेंट याText
वाले अन्य कंपोज़ेबल. सुलभता सेवाओं को इन एलिमेंट के लिए लेबल अपने-आप मिल जाते हैं.- सजावटी इमेज या जिन इमेज का इस्तेमाल ज़रूरी जानकारी देने के लिए नहीं किया जाता.
- इन मामलों में,
contentDescription
पैरामीटर याModifier.semantics#contentDescription
प्रॉपर्टी कोnull
पर सेट करें याModifier#clearAndSetSemantics
का इस्तेमाल करें.
- इन मामलों में,
डिज़ाइन
यूज़र इंटरफ़ेस डिज़ाइन करते समय, सुलभता सेवाओं का इस्तेमाल करने वाले लोगों को ध्यान में रखते हुए ग्राफ़िक वाले एलिमेंट का इस्तेमाल करें. साथ ही, उसमें कॉन्टेंट लेवल जोड़ते समय सावधानी बरतें. कॉन्टेंट लेबल जोड़ते समय, इन बातों का ध्यान रखें:
- लेबल को छोटा रखें. साथ ही, उसमें एलिमेंट का मतलब या उससे जुड़ी कार्रवाई के बारे में सही तरीके से बताएं.
- एलिमेंट के कॉन्टेंट लेबल में उसका टाइप या स्टेट शामिल न करें.
- अगर एलिमेंट से कोई कार्रवाई जुड़ी है, तो उस कार्रवाई का ब्यौरा दें, न कि एलिमेंट के ग्राफ़िक का.
- ऐप्लिकेशन का इस्तेमाल करने वाले व्यक्ति को एलिमेंट के साथ इंटरैक्ट करने का तरीका न बताएं.
इस बारे में ज़्यादा जानने के लिए, सुलभता के हिसाब से मटीरियल डिज़ाइन करने से जुड़े दिशा-निर्देश पढ़ें.
टेस्ट करना
मैन्युअल तरीके से इस बात की जांच की सकती है कि ऐप्लिकेशन के यूज़र इंटरफ़ेस में कॉन्टेंट लेबल जोड़ा गया है या नहीं. इसके लिए:
- TalkBack चालू करें.
- ऐप्लिकेशन खोलें.
- सुलभता के फ़ोकस को स्क्रीन पर मौजूद हर एलिमेंट पर ले जाने के लिए, लीनियर नेविगेशन जेस्चर का इस्तेमाल करें.
- अगर TalkBack, फ़ोकस को किसी एलिमेंट पर ले जाता है, लेकिन वह एलिमेंट के बारे में सही जानकारी नहीं देता या "लेबल नहीं किया गया" मैसेज बोलता है, तो हो सकता है कि उस एलिमेंट में कॉन्टेंट लेबल न जोड़ा गया हो.
Android के ऑटोमेटेड टेस्टिंग टूल, यह पता लगा लेते हैं कि एलिमेंट में कॉन्टेंट लेबल मौजूद हैं या नहीं. डिवाइस पर अपने ऐप्लिकेशन को मैन्युअल तौर पर टेस्ट करने के लिए, Android के Accessibility Scanner का इस्तेमाल करें. ऑटोमेटेड टेस्ट के लिए, Espresso और Robolectric में सुलभता चेक इन चालू करें.