'Thiếu nội dung Mô tả thuộc tính trên hình ảnh' trong XML


222

Tôi nhận được một cảnh báo về [Khả năng truy cập] Thiếu thuộc tính mô tả nội dung trên hình ảnh trong nhật thực. Cảnh báo này hiển thị ở dòng 5 (khai báo ImageView) trong mã XML bên dưới.

Điều này không gây ra bất kỳ lỗi nào khi xây dựng và chạy ứng dụng của tôi. Nhưng tôi thực sự muốn biết tại sao tôi nhận được cảnh báo này.

Đây là tệp XML của tôi:

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

Xin hãy giúp tôi về điều này và cảm ơn bạn đã đọc.


6
đề xuất phiên bản ADT mới thêm android:contentDescriptionthuộc tính này vào imageview, chỉ là một gợi ý, tôi nghĩ bạn có thể bỏ qua điều này, nó không gây ra lỗi biên dịch, bạn cũng có thể kiểm trahttp://developer.android.com/reference/android/view/View.html#attr_android:contentDescription
idiottiger

vâng đúng vậy
Rahul Kushwaha

Câu trả lời:


269

Theo liên kết này để có giải pháp: Nội dung Android Lint Cảnh báo mô tả

Đã giải quyết cảnh báo này bằng cách đặt thuộc tính android: contentDes mô tả cho ImageView của tôi

android: contentDescription = "@ chuỗi / desc"

Hỗ trợ Android Lint trong ADT 16 đưa ra cảnh báo này để đảm bảo rằng các widget hình ảnh cung cấp một mô tả nội dung

Điều này xác định văn bản mô tả ngắn gọn nội dung của chế độ xem. Khách sạn này được sử dụng chủ yếu cho khả năng tiếp cận. Vì một số khung nhìn không có biểu diễn văn bản, nên thuộc tính này có thể được sử dụng để cung cấp như vậy.

Các tiện ích phi văn bản như ImageViews và ImageButtons nên sử dụng thuộc tính mô tả nội dung để chỉ định mô tả văn bản của tiện ích sao cho trình đọc màn hình và các công cụ trợ năng khác có thể mô tả đầy đủ giao diện người dùng.

Liên kết này để giải thích: Khả năng tiếp cận, Đó là tác động và tài nguyên phát triển

Nhiều người dùng Android bị khuyết tật yêu cầu họ tương tác với các thiết bị Android của họ theo những cách khác nhau. Những người này bao gồm những người dùng bị khuyết tật về thị giác, thể chất hoặc tuổi tác khiến họ không thể nhìn thấy hoặc sử dụng màn hình cảm ứng.

Android cung cấp các tính năng và dịch vụ trợ năng để giúp những người dùng này điều hướng thiết bị của họ dễ dàng hơn, bao gồm chuyển văn bản thành giọng nói, phản hồi xúc giác, điều hướng trackball và D-pad giúp tăng trải nghiệm của họ. Các nhà phát triển ứng dụng Android có thể tận dụng các dịch vụ này để làm cho ứng dụng của họ dễ truy cập hơn và cũng có thể xây dựng các dịch vụ trợ năng của riêng họ.

Hướng dẫn này là để làm cho ứng dụng của bạn có thể truy cập: Làm cho ứng dụng dễ truy cập hơn

Đảm bảo ứng dụng của bạn có thể truy cập được đối với tất cả người dùng tương đối dễ dàng, đặc biệt khi bạn sử dụng các thành phần giao diện người dùng được cung cấp theo khung. Nếu bạn chỉ sử dụng các thành phần tiêu chuẩn này cho ứng dụng của mình, chỉ cần một vài bước để đảm bảo ứng dụng của bạn có thể truy cập được:

  1. Dán nhãn ImageButton , ImageView , EditText , CheckBox và các điều khiển giao diện người dùng khác bằng thuộc tính android: contentDescription .

  2. Làm cho tất cả các thành phần giao diện người dùng của bạn có thể truy cập được bằng bộ điều khiển hướng, chẳng hạn như trackball hoặc D-pad.

  3. Kiểm tra ứng dụng của bạn bằng cách bật các dịch vụ trợ năng như TalkBack và Explore bằng Touch và thử sử dụng ứng dụng của bạn chỉ bằng các điều khiển hướng.


92
Một lưu ý quan trọng hơn! Trong trường hợp này, có vẻ như hình ảnh hoàn toàn là trang trí và không cung cấp thêm thông tin cho người dùng. Vì vậy, ví dụ, bạn sẽ không muốn nói "Hình ảnh liên hệ" với người dùng nhưng bạn có thể muốn nói "Ảnh đại diện của Bob" nếu bạn không hiển thị văn bản đó ở bất kỳ nơi nào khác. Nếu một hình ảnh không nên được nói với người dùng, bạn có thể đặt android: contentDescription = "@ null" và cảnh báo sẽ biến mất.
alanv

1
@alanv: bình luận tuyệt vời. Tốt hơn nhiều so với việc vô hiệu hóa hoàn toàn cảnh báo như thường được khuyên.
ChiefTwoP Pencil 20/214

13
Thật ra tôi không nghĩ android: contentDescription = "@ null" là giải pháp tốt nhất. Tôi đang sử dụng các công cụ: ign = "ContentDes mô tả" đó là ý nghĩa của nó. Đảm bảo bạn bao gồm xmlns: tools = " schemas.android.com/tools " trong bố cục gốc của bạn.
Sotti

cảm ơn bạn đã cung cấp tài liệu tốt đẹp như vậy. Khi bạn có thể có hình ảnh như ứng dụng thư viện hình nền, có phù hợp để thêm mô tả nội dung cho tất cả hình ảnh không? và nó cũng có thể ảnh hưởng đến hiệu suất ứng dụng?
Rahul Mandaliya

67

Thêm android:contentDescription="@string/description"(tĩnh hoặc động) vào ImageView của bạn. Vui lòng không bỏ qua cũng không lọc tin nhắn, vì nó hữu ích cho những người sử dụng các phương thức nhập thay thế vì khuyết tật của họ (Giống như TalkBack, Tecla Access Shield, v.v.).


@ Jeroen- Khi tôi thêm mô tả, nó có nội dung: "Không thể giải quyết tài nguyên @ chuỗi / loginText" - Tại sao lại như vậy?
Jamal Zafar

Bạn có một chuỗi loginText trong chuỗi XML không?
Praveen

1
@JamalZafar tạo một chuỗi trong chuỗi XML với tên loginText
Ayush

36

Cập nhật:

Như đã chỉ ra trong các bình luận, việc đặt mô tả thành null chỉ ra rằng hình ảnh hoàn toàn là trang trí và được hiểu bởi những người đọc màn hình như TalkBack.

Câu trả lời cũ, tôi không còn hỗ trợ câu trả lời này:

Đối với tất cả những người tìm cách tránh cảnh báo:

Tôi không nghĩ android:contentDescription="@null"là giải pháp tốt nhất.

Tôi đang sử dụng tools:ignore="ContentDescription"đó là những gì có nghĩa là.

Hãy chắc chắn rằng bạn bao gồm xmlns:tools="http://schemas.android.com/tools"trong bố trí gốc của bạn.


1
Điều này nên được nâng cấp bởi vì đó cũng là những gì Google khuyến nghị
Lê Đình Nhất Khánh

4
Sử dụng @nullnhư một nội dung Mô tả là một cách nói rõ ràng rằng hình ảnh này hoàn toàn là trang trí. Đơn giản chỉ cần bỏ qua cảnh báo không phải là giải pháp chính xác.
karl

1
Sử dụng @nullnói với TalkBack rằng hình ảnh là trang trí. Bạn không nên bỏ qua cảnh báo vì đưa ra @nullthông báo cho TalkBack thay vì làm cho nó bị thiếu và nên ở đó.
Ab

10

Thêm vào

tools:ignore="ContentDescription"

để hình ảnh của bạn. Hãy chắc chắn rằng bạn có xmlns:tools="http://schemas.android.com/tools" .trong bố trí gốc của bạn.


1
+1. Đây là cách khắc phục của Android Studio cho sự cố này (khi bạn thực hiện phân tích mã, nút "triệt tiêu Lint" sẽ thực hiện điều đó)
noamgot

9

Cảnh báo thực sự gây phiền nhiễu và trong nhiều trường hợp (hầu hết!) Không có nội dung Mô tả là cần thiết cho các ImageView trang trí khác nhau. Cách triệt để nhất để giải quyết vấn đề là chỉ cần nói với Lint bỏ qua kiểm tra này. Trong Eclipse, đi đến "Kiểm tra lỗi Android / Lint" trong Tùy chọn, tìm "mô tả nội dung" (nằm trong nhóm "Trợ năng") và thay đổi "Mức độ nghiêm trọng:" thành Bỏ qua.


9
Đừng bỏ qua cảnh báo này. Như những người khác đã chỉ ra khả năng tiếp cận là quan trọng ngay cả khi nó chỉ là một hình ảnh trang trí. Không có vấn đề gì lớn để thêm nội dung mong muốn
Mô tả

1
Bạn cũng có thể bỏ qua cảnh báo nếu ứng dụng của bạn là một ứng dụng cơ bản không thể truy cập được ngay cả với các mô tả nội dung. Ví dụ, tại sao phải bận tâm contentDescriptiontrong một trò chơi đòi hỏi tầm nhìn để có thể chơi?
CorayThan

Vâng, đó sự lựa chọn triệt để; Vì vậy, những người làm nhận thức được mục đích của nó là gì và muốn tuân thủ? Tôi muốn mạo hiểm nói rằng trong trường hợp cụ thể này, hãy quên những trường hợp "nhất"; điều đó dường như ngụ ý rằng bởi vì "hầu hết" mọi người không, chẳng hạn, bị mù, đó có phải là một cảnh báo không cần thiết? Nếu "hầu hết" hình ảnh của bạn không cần nội dung như vậy - tốt, hãy tắt cảnh báo, nhưng thêm nó vào nơi có ý nghĩa. Là một chút hữu ích có thể đi một chặng đường dài.
ChiefTwoP Pencil 20/214

9

Nếu bạn không quan tâm tất cả hãy làm điều này:

    android:contentDescription="@null"

Mặc dù tôi sẽ tư vấn các giải pháp được chấp nhận, đây là một hack: D


3
Thật ra tôi không nghĩ android: contentDescription = "@ null" là giải pháp tốt nhất. Tôi đang sử dụng các công cụ: ign = "ContentDes mô tả" đó là ý nghĩa của nó. Đảm bảo bạn bao gồm xmlns: tools = " schemas.android.com/tools " trong bố cục gốc của bạn.
Sotti

Không ai nói vậy. Đọc bình luận một lần nữa. Bạn chỉ cần bỏ qua cảnh báo để giải pháp mà bạn cung cấp chắc chắn tồi tệ hơn. Đọc câu trả lời được chấp nhận nhiều nhất một lần nữa.
alap

5

Đi về phía trước, đối với các yếu tố đồ họa hoàn toàn là trang trí , giải pháp tốt nhất là sử dụng:

android:importantForAccessibility="no"

Điều này có ý nghĩa nếu phiên bản SDK tối thiểu của bạn ít nhất là 16, vì các thiết bị chạy phiên bản thấp hơn sẽ bỏ qua thuộc tính này.

Nếu bạn bị mắc kẹt trong việc hỗ trợ các phiên bản cũ hơn, bạn nên sử dụng (như những người khác đã chỉ ra):

android:contentDescription="@null"

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


2

Cảnh báo này cố gắng cải thiện khả năng truy cập ứng dụng của bạn.

Để tắt cảnh báo mô tả nội dung bị thiếu trong toàn bộ dự án, bạn có thể thêm phần này vào mô-đun ứng dụng build.gradle

android {

    ...

    lintOptions {
        disable 'ContentDescription'
    }
}

0

Nó đưa ra cảnh báo cho bạn vì mô tả hình ảnh không được xác định.

Chúng tôi có thể giải quyết cảnh báo này bằng cách thêm mã này bên dưới trong String.xml và Activity_main.xml

Thêm dòng này bên dưới trong String.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" />

Đồng thời thêm dòng này vào Activity_main.xml

android:contentDescription="@string/imgDescription"

Chuỗi tệp

<resources>
    <string name="app_name">Saini_Browser</string>
    <string name="SainiBrowser">textView2</string>
    <string name="imgDescription">BackGround Picture</string>
</resources>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.