เนื้อหา Android Lint คำเตือนคำอธิบาย


130

ฉันได้รับคำเตือนว่า "[การช่วยการเข้าถึง] ไม่มีแอตทริบิวต์ contentDescription บนรูปภาพ" สำหรับมุมมองภาพ ในขณะที่ใช้ผ้าสำลีของ Android

นั่นหมายความว่าอย่างไร?


5
นี่เป็นคำเตือนที่น่ารำคาญโดยเฉพาะอย่างยิ่งสำหรับภาพที่มีไหวพริบ
ใครสักคน

6
ฉันกำหนดสิ่งนี้ใน strings.xml: <string name="none"></string> แล้วฉันก็ใช้android:contentDescription="@string/none"
ใครสักคน

คำตอบ:


170

แก้ไขคำเตือนนี้โดยตั้งค่าแอตทริบิวต์android:contentDescriptionสำหรับ ImageView ของฉัน

android:contentDescription="@string/desc"

การสนับสนุน Android Lint ใน ADT 16 จะแสดงคำเตือนนี้เพื่อให้แน่ใจว่าวิดเจ็ตรูปภาพมี contentDescription

สิ่งนี้กำหนดข้อความที่อธิบายสั้น ๆ เกี่ยวกับเนื้อหาของมุมมอง คุณสมบัตินี้ใช้เพื่อการเข้าถึงเป็นหลัก เนื่องจากบางมุมมองไม่มีการแสดงข้อความแอตทริบิวต์นี้จึงสามารถใช้ในการระบุได้

วิดเจ็ตที่ไม่ใช่ข้อความเช่น ImageViews และ ImageButtons ควรใช้แอตทริบิวต์ contentDescription เพื่อระบุคำอธิบายที่เป็นข้อความของวิดเจ็ตเพื่อให้โปรแกรมอ่านหน้าจอและเครื่องมือการช่วยสำหรับการเข้าถึงอื่น ๆ สามารถอธิบายอินเทอร์เฟซผู้ใช้ได้อย่างเพียงพอ


4
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้และทดสอบได้ด้วยตัวเองโดยไปที่: android-developers.blogspot.com/2012/04/…และdeveloper.android.com/guide/topics/ui/accessibility/…
android developer

49

การปิดคำเตือน Lint จะทำให้คุณมีปัญหาในภายหลังได้อย่างง่ายดาย คุณจะดีกว่าเพียงแค่ระบุ contentDescription สำหรับ ImageView ทั้งหมดของคุณ หากคุณไม่ต้องการคำอธิบายให้ใช้:

android:contentDescription="@null"

38

อีกทางเลือกหนึ่งคือการระงับคำเตือนทีละรายการ:

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

ตัวอย่าง:

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

ไม่ถูกต้อง - การเพิ่มเครื่องมือ: เพิกเฉย = "contentDescription" ใน RelativeLayout ทำให้เกิดข้อผิดพลาดในการคอมไพล์ "แอตทริบิวต์ไม่มีคำนำหน้าเนมสเปซ Android"
G. Kh.

3
นี่คือปัญหาคราส เพียงทำความสะอาดโครงการของคุณ และตรวจสอบให้แน่ใจว่า: xmlns: tools = " schemas.android.com/tools " รวมอยู่ด้วย!
นาร์เบิร์นสไตน์

24

ขอแนะนำให้คุณเพิ่ม contentDescription

android:contentDescription="@string/contentDescriptionXxxx"

แต่ขอให้เป็นจริง คนส่วนใหญ่ไม่ได้รักษาตัวอักษรไว้สำหรับการเข้าถึง ถึงกระนั้นด้วยความพยายามเพียงเล็กน้อยคุณก็สามารถทำบางสิ่งเพื่อช่วยเหลือผู้พิการได้

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

.

สิ่งที่สำคัญที่สุดที่ผู้ใช้ตาบอดจะต้องรู้คือ"ปุ่มที่ฉันต้องคลิกเพื่อดำเนินการต่ออยู่ที่ไหน"

ใช้ contentDescriptionAction สำหรับทุกสิ่งที่คลิกได้

ใช้ contentDescriptionContent สำหรับรูปภาพพร้อมข้อมูล (กราฟ, textAsImage, ... )

ใช้ contentDescriptionUserContent สำหรับเนื้อหาที่ผู้ใช้ให้มาทั้งหมด

ใช้ contentDescriptionUseless สำหรับส่วนที่เหลือทั้งหมด


1
ขอบคุณ! เป็นทางเลือกที่ดีที่สุดเสมอในการระบุคำอธิบายนี้แทนเพื่อระงับคำเตือน
Vinicius Paldês

12

เนื่องจากเป็นเพียงคำเตือนเท่านั้นที่คุณสามารถระงับได้ ไปที่เค้าโครงกราฟิกของ XML แล้วทำสิ่งนี้:

  1. คลิกที่ปุ่มสีแดงมุมบนขวา

    ป้อนคำอธิบายภาพที่นี่

  2. เลือก "ปิดใช้งานประเภทปัญหา" (ตัวอย่าง)

    ป้อนคำอธิบายภาพที่นี่


4
จริงอยู่คุณสามารถระงับมันได้ แต่คุณควรทำตามคำแนะนำของคำตอบที่เลือกเพื่อประโยชน์ของผู้ใช้ที่พึ่งพาเครื่องมือการเข้าถึงที่ Android มีให้
Kyle Falconer

นี่ไง!!! นั่นคือสิ่งที่ฉันกำลังมองหา คำตอบนี้และคำตอบของ @Gunnar Bernstein ทำให้ฉันได้รับ
IronBlossom

3

หากคุณต้องการระงับคำเตือนนี้อย่างสวยงาม (เนื่องจากคุณแน่ใจว่าไม่จำเป็นต้องมีการช่วยสำหรับการเข้าถึงสำหรับ ImageView นี้) คุณสามารถใช้แอตทริบิวต์พิเศษ:

android:importantForAccessibility="no"

2

ไปที่Gradleไฟล์ (แอพโมดูล) เพิ่มบล็อกโค้ดด้านล่าง

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

ไม่มีคำเตือนอีกต่อไป! มีความสุขในการเข้ารหัส


มีความสุขในการเขียนโค้ด แต่โปรดทราบว่าสิ่งนี้จะเป็นอันตรายต่อการเข้าถึงสำหรับผู้ที่พึ่งพามันจริงๆ
ฉันคือมังกรกบ

1

วิดเจ็ตที่ไม่ใช่ข้อความต้องการคำอธิบายเนื้อหาในบางวิธีในการอธิบายรูปภาพเป็นข้อความเพื่อให้ผู้อ่านหน้าจอสามารถอธิบายอินเทอร์เฟซผู้ใช้ คุณสามารถละเว้นคุณสมบัติหรือกำหนดคุณสมบัติxmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"


1

ContentDescriptionจำเป็นสำหรับการเข้าถึงของ Android โดยเฉพาะอย่างยิ่งสำหรับคุณสมบัติโปรแกรมอ่านหน้าจอ หากคุณไม่รองรับการเข้าถึงของ Android คุณสามารถเพิกเฉยได้ด้วยการตั้งค่าLintผ้าสำลี

lint.xmlดังนั้นเพียงแค่สร้าง

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

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

</lint>

และนำไปappไว้ที่โฟลเดอร์

ป้อนคำอธิบายภาพที่นี่


1

สำหรับองค์ประกอบกราฟิกที่ตกแต่งอย่างหมดจดให้ตั้งค่าแอตทริบิวต์ XML ของ android: contentDescription เป็น "@null"

หากแอปของคุณรองรับเฉพาะอุปกรณ์ที่ใช้ Android 4.1 (API ระดับ 16) ขึ้นไปคุณสามารถตั้งค่าแอตทริบิวต์ XML ขององค์ประกอบเหล่านี้ของ android: importantForAccessibility XML เป็น "no" ได้


android: importantForAccessibilty คือสิ่งที่ฉันกำลังมองหา ขอบคุณ!
Hrafn

นี่เป็นคำตอบที่ถูกต้องและควรเป็นคำตอบอันดับต้น ๆ
ตั้งแต่

0

เนื่องจากฉันต้องการ ImageView เพื่อเพิ่มไอคอนเพียงเพื่อความสวยงามที่ฉันได้เพิ่มเข้าไป tools:ignore="ContentDescription"ในแต่ละ ImageView ที่ฉันมีในไฟล์ xml ของฉัน

ฉันไม่ได้รับข้อความแสดงข้อผิดพลาดอีกต่อไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.