एक्सएमएल में 'मिसिंग कंटेंटडेसक्रिप्शन फीचर ऑन इमेज'


222

मुझे ग्रहण में छवि पर सामग्री पहुंच की अनुपलब्धता [पहुंच] के बारे में चेतावनी मिलती है । यह चेतावनी ImageViewनीचे दिए गए XML कोड में लाइन 5 (घोषित ) पर दिखाई देती है ।

यह मेरा आवेदन बनाते और चलाते समय कोई त्रुटि नहीं करता है। लेकिन मैं वास्तव में जानना चाहता हूं कि मुझे यह चेतावनी क्यों मिली।

यह मेरी XML फ़ाइल है:

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

कृपया इसके बारे में मेरी मदद करें और आपके पढ़ने के लिए धन्यवाद।


6
नया ADT संस्करण सुझाव android:contentDescriptionइस विशेषता को जोड़ते हैं imageview, बस एक सुझाव है, मुझे लगता है कि आप इसे अनदेखा कर सकते हैं, यह संकलन त्रुटि नहीं करता है, आप यह भी देख सकते हैंhttp://developer.android.com/reference/android/view/View.html#attr_android:contentDescription
idiottiger

हां, यह सही है
राहुल कुशवाहा

जवाबों:


269

समाधान के लिए इस लिंक का अनुसरण करें: Android Lint contentDescription चेतावनी

विशेषता Android की स्थापना करके इस चेतावनी को हल किया: मेरे चित्र के लिए contentDescription

एंड्रॉयड: सामग्रीमंडलियों = "@ स्ट्रिंग / desc"

16 ADT में एंड्रॉइड लिंट का समर्थन इस चेतावनी को फेंकता है ताकि यह सुनिश्चित किया जा सके कि छवि विजेट एक सामग्री प्रदान करते हैं

यह पाठ को परिभाषित करता है जो दृश्य की सामग्री का संक्षेप में वर्णन करता है। इस संपत्ति का उपयोग मुख्य रूप से पहुंच के लिए किया जाता है। चूँकि कुछ विचारों में पाठात्मक निरूपण नहीं होता है, इसलिए इस विशेषता का उपयोग इस प्रकार प्रदान करने के लिए किया जा सकता है।

ImageViews और ImageButtons जैसे गैर-टेक्स्टुअल विगेट्स को विजेट के एक टेक्स्ट विवरण को निर्दिष्ट करने के लिए सामग्रीडेसक्रिप्शन विशेषता का उपयोग करना चाहिए, जैसे कि स्क्रीन रीडर और अन्य एक्सेसिबिलिटी टूल उपयोगकर्ता इंटरफ़ेस का पर्याप्त वर्णन कर सकते हैं।

स्पष्टीकरण के लिए यह लिंक: पहुंच, यह प्रभाव और विकास संसाधन है

कई एंड्रॉइड उपयोगकर्ताओं के पास विकलांग हैं जो उन्हें अपने एंड्रॉइड डिवाइसों के साथ विभिन्न तरीकों से बातचीत करने की आवश्यकता होती है। इनमें ऐसे उपयोगकर्ता शामिल होते हैं जिनके पास दृश्य, भौतिक या आयु-संबंधी अक्षमताएं होती हैं जो उन्हें टचस्क्रीन को पूरी तरह से देखने या उपयोग करने से रोकती हैं।

एंड्रॉइड इन उपयोगकर्ताओं को अपने डिवाइस को और अधिक आसानी से नेविगेट करने में मदद करने के लिए एक्सेसिबिलिटी सुविधाएँ और सेवाएं प्रदान करता है, जिसमें टेक्स्ट-टू-स्पीच, हैप्टिक फीडबैक, ट्रैकबॉल और डी-पैड नेविगेशन शामिल हैं जो उनके अनुभव को बढ़ाते हैं। एंड्रॉइड एप्लिकेशन डेवलपर्स अपने एप्लिकेशन को अधिक सुलभ बनाने के लिए इन सेवाओं का लाभ उठा सकते हैं और अपनी एक्सेसिबिलिटी सेवाओं का निर्माण भी कर सकते हैं।

यह गाइड आपके ऐप को सुलभ बनाने के लिए है: ऐप्स को अधिक एक्सेसिबल बनाना

यह सुनिश्चित करना कि आपका एप्लिकेशन सभी उपयोगकर्ताओं के लिए सुलभ हो, अपेक्षाकृत आसान है, खासकर जब आप फ्रेमवर्क-प्रदान उपयोगकर्ता इंटरफ़ेस घटकों का उपयोग करते हैं। यदि आप केवल अपने आवेदन के लिए इन मानक घटकों का उपयोग करते हैं, तो आपके आवेदन के सुगम होने के लिए कुछ कदमों की आवश्यकता है:

  1. अपने ImageButton , ImageView , EditText , CheckBox और अन्य उपयोगकर्ता इंटरफ़ेस नियंत्रण को Android का उपयोग करके नियंत्रित करें : contentDescription विशेषता।

  2. अपने सभी उपयोगकर्ता इंटरफ़ेस तत्वों को एक दिशात्मक नियंत्रक जैसे ट्रैकबॉल या डी-पैड के साथ सुलभ बनाएं।

  3. TalkBack और एक्सप्लोर बाय टच जैसी पहुंच सेवाओं को चालू करके अपने एप्लिकेशन का परीक्षण करें, और केवल दिशात्मक नियंत्रण का उपयोग करके अपने एप्लिकेशन का उपयोग करने का प्रयास करें।


92
एक और महत्वपूर्ण नोट! इस मामले में, ऐसा लगता है कि छवि पूरी तरह से सजावटी है और उपयोगकर्ता को अतिरिक्त जानकारी प्रदान नहीं करती है। इसलिए, उदाहरण के लिए, आप उपयोगकर्ता से "संपर्क छवि" नहीं बोलना चाहेंगे, लेकिन यदि आप उस पाठ को कहीं और नहीं दिखाते हैं, तो आप "बॉब की प्रोफ़ाइल फ़ोटो" बोलना चाहते हैं। यदि किसी छवि को उपयोगकर्ता से बात नहीं की जानी चाहिए, तो आप Android: contentDescription = "@ null" सेट कर सकते हैं और चेतावनी चली जाएगी।
एलन्व

1
@alanv: शानदार टिप्पणी। आमतौर पर सलाह दी जाती है कि चेतावनी को पूरी तरह से अक्षम करने से बेहतर है।
चीफट्विपेंसिल्स

13
वास्तव में मुझे नहीं लगता कि android: contentDescription = "@ null" सबसे अच्छा समाधान है। मैं टूल का उपयोग कर रहा हूं: अनदेखा करें = "ContentDescription" जो कि होना चाहिए। सुनिश्चित करें कि आप अपने रूट लेआउट में xmlns: tools = " schemas.android.com/tools " शामिल करें।
सोती

इस तरह के अच्छे दस्तावेज़ प्रदान करने के लिए धन्यवाद। जब आपके पास वॉलपेपर गैलरी ऐप जैसी छवियां हो सकती हैं, तो क्या यह सभी छवियों के लिए सामग्री विवरण जोड़ने के लिए उपयुक्त है? और यह भी app प्रदर्शन पर असर कर सकते हैं?
राहुल मंडलीया

67

android:contentDescription="@string/description"अपने ImageView में (स्थिर या गतिशील) जोड़ें । कृपया संदेश को अनदेखा न करें और न ही फ़िल्टर करें, क्योंकि यह वैकल्पिक इनपुट विधियों का उपयोग करने वाले लोगों के लिए उपयोगी है क्योंकि उनकी विकलांगता (जैसे TalkBack, Tecla Access Shield आदि)।


@ Jeroen- जब मैंने विवरण जोड़ा, तो यह कह रहा है: "संसाधन @ स्ट्रिंग / लॉगिन को हल नहीं कर सका" - ऐसा क्यों है?
जमाल ज़फर

क्या आपके पास स्ट्रिंग XML में एक लॉगिनटेक्स्ट स्ट्रिंग है?
प्रवीण

1
@JamalZafar string.xml में एक स्ट्रिंग बनाते हैं, जिसका नाम loginText है
आयुष गोयल

36

अपडेट किया गया:

जैसा कि टिप्पणियों में बताया गया है, वर्णन को अशक्त करने के लिए संकेत मिलता है कि छवि विशुद्ध रूप से सजावटी है और इसे स्क्रीन रीडर द्वारा बोल्डबैक के रूप में समझा जाता है।

पुराना उत्तर, मैं अब इस उत्तर का समर्थन नहीं करता:

चेतावनी से बचने के लिए देख रहे सभी लोगों के लिए:

मुझे नहीं लगता android:contentDescription="@null"कि सबसे अच्छा समाधान है।

मैं tools:ignore="ContentDescription"वही उपयोग कर रहा हूं जो होना चाहिए।

सुनिश्चित करें कि आप xmlns:tools="http://schemas.android.com/tools"अपने रूट लेआउट में शामिल हैं।


1
यह एक उत्थान होना चाहिए क्योंकि यह भी है कि Google ने क्या सिफारिश की है
ले दीन्ह नात खान

4
@nullContentDescription के रूप में उपयोग करना स्पष्ट रूप से यह कहने का एक तरीका है कि यह छवि पूरी तरह से सजावटी है। बस चेतावनी को नजरअंदाज करना सही समाधान नहीं है।
कर्ल

1
@nullटॉकबैक का उपयोग करके बताता है कि छवि सजावटी है। आपको चेतावनी को अनदेखा नहीं करना चाहिए क्योंकि @nullटॉकबैक को सूचित करने के बजाय यह सोचना चाहिए कि यह गायब है और यह होना चाहिए।
Ab

10

जोड़ना

tools:ignore="ContentDescription"

आपकी छवि के लिए। सुनिश्चित करें कि आप xmlns:tools="http://schemas.android.com/tools" .अपने रूट लेआउट में हैं।


1
+1। यह इस समस्या के लिए एंड्रॉइड स्टूडियो का फिक्स है (जब आप कोड विश्लेषण करते हैं, तो "द
लींट

9

चेतावनी वास्तव में कष्टप्रद है और कई (अधिकांश!) मामलों में विभिन्न सजावटी ImageViews के लिए कोई सामग्रीडिसक्रिप्शन आवश्यक नहीं है। समस्या को हल करने का सबसे कट्टरपंथी तरीका यह है कि लिंट को इस चेक को अनदेखा करने के लिए कहा जाए। ग्रहण में, वरीयताएँ में "एंड्रॉइड / लिंट एरर चेकिंग" पर जाएं, "कंटेंटडेस्क्रिप्शन" (यह "एक्सेसिबिलिटी" समूह में है) और "गंभीरता:" को अनदेखा करने के लिए बदलें।


9
इस चेतावनी को अनदेखा न करें। जैसा कि दूसरों ने बताया है कि अगर यह सिर्फ एक सजावटी छवि है, तो भी एक्सेसिबिलिटी महत्वपूर्ण है। वांछित कंटेंट जोड़ने के लिए कोई बड़ी बात नहीं है
jamesc

1
आप चेतावनी को अनदेखा कर सकते हैं यदि आपका ऐप वह है जो सामग्री विवरण के साथ अनिवार्य रूप से दुर्गम होगा। उदाहरण के लिए, contentDescriptionएक ऐसे खेल में क्यों परेशान होना चाहिए जिसके लिए दृष्टि को खेलने में सक्षम होना चाहिए?
कोरेथन

हां, यह है कट्टरपंथी विकल्प; इसलिए लोग क्या करते हैं जो इसके उद्देश्य से वाकिफ हैं और इसका पालन करना चाहते हैं? मैं यह कहने के लिए उद्यम करूंगा कि इस विशेष मामले में, "अधिकांश" मामलों को भूल जाएं; ऐसा इसलिए लगता है क्योंकि "अधिकांश" लोग उदाहरण के लिए अंधे नहीं हैं, क्योंकि यह एक अनावश्यक चेतावनी है? यदि आपकी छवियों के "अधिकांश" को ऐसी कोई सामग्री नहीं चाहिए - ठीक है, तो चेतावनी को अक्षम करें, लेकिन इसे जोड़ें जहां यह समझ में आएगा। थोड़ा मददगार बनने से एक लंबा रास्ता तय किया जा सकता है।
चीफट्विपेंसिल्स

9

अगर आपको इसकी परवाह नहीं है तो ऐसा करें:

    android:contentDescription="@null"

हालांकि मैं स्वीकृत समाधानों की सलाह दूंगा, यह एक हैक है: डी


3
वास्तव में मुझे नहीं लगता कि android: contentDescription = "@ null" सबसे अच्छा समाधान है। मैं टूल का उपयोग कर रहा हूं: अनदेखा करें = "ContentDescription" जो कि होना चाहिए। सुनिश्चित करें कि आप अपने रूट लेआउट में xmlns: tools = " schemas.android.com/tools " शामिल करें।
सोती

ऐसा किसी ने नहीं कहा। टिप्पणी फिर से पढ़ें। आप बस चेतावनी को नजरअंदाज कर देते हैं ताकि आपके द्वारा प्रदान किया जाने वाला समाधान निश्चित रूप से बदतर हो। सबसे स्वीकृत उत्तर फिर से पढ़ें।
अलाप

5

आगे जा रहे हैं, विशुद्ध रूप से सजावटी हैं कि ग्राफिकल तत्वों के लिए , सबसे अच्छा समाधान का उपयोग करना है:

android:importantForAccessibility="no"

यह समझ में आता है कि यदि आपका न्यूनतम एसडीके संस्करण कम से कम 16 है, क्योंकि निचले संस्करण चलाने वाले उपकरण इस विशेषता को अनदेखा करेंगे।

यदि आप पुराने संस्करणों का समर्थन कर रहे हैं, तो आपको उपयोग करना चाहिए (जैसे अन्य ने पहले ही बताया):

android:contentDescription="@null"

स्रोत: https://developer.android.com/guide/topics/ui/accessibility/apps#label-elements


2

यह चेतावनी आपके आवेदन की पहुंच में सुधार करने की कोशिश करती है।

पूरी परियोजना में लापता सामग्री विवरण चेतावनी को अक्षम करने के लिए, आप इसे अपने एप्लिकेशन मॉड्यूल build.gradle में जोड़ सकते हैं

android {

    ...

    lintOptions {
        disable 'ContentDescription'
    }
}

0

यह आपको चेतावनी दे रहा है क्योंकि छवि विवरण परिभाषित नहीं है।

हम नीचे स्ट्रिंग्स.xml और activity_main.xml में इस कोड को जोड़कर इस चेतावनी को हल कर सकते हैं

नीचे इस पंक्ति को Strings.xml में जोड़ें

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

इस लाइन को activity_main.xml में भी जोड़ें

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>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.