Nội dung Android Lint Cảnh báo mô tả


130

Tôi đang nhận được cảnh báo là "[Trợ năng] Thiếu nội dung Mô tả mô tả trên hình ảnh" cho chế độ xem hình ảnh. trong khi sử dụng Android lint

Điều đó nghĩa là gì?


5
đây là một cảnh báo khó chịu - đặc biệt là đối với những hình ảnh chỉ dành cho sự tinh tế
Ai đó ở đâu đó vào

6
Tôi đã định nghĩa điều này trong chuỗi XML: <string name="none"></string> và sau đó tôi đã sử dụngandroid:contentDescription="@string/none"
Ai đó ở đâu đó vào

Câu trả lời:


170

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

android:contentDescription="@string/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ả 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.


4
bạn có thể đọc thêm về nó và kiểm tra nó bằng chính mình bằng cách vào: android-developers.blogspot.com/2012/04/...developer.android.com/guide/topics/ui/accessibility/...
android phát triển

49

Vô hiệu hóa cảnh báo Lint sẽ dễ dàng khiến bạn gặp rắc rối về sau. Tốt hơn hết là bạn chỉ định mô tả nội dung cho tất cả các ImageView của bạn. Nếu bạn không cần một mô tả, thì chỉ cần sử dụng:

android:contentDescription="@null"

38

Một lựa chọn khác là ngăn chặn cảnh báo riêng lẻ:

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

Thí dụ:

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

Không chính xác - thêm công cụ: ign = "contentDes mô tả" vào RelativeLayout dẫn đến lỗi biên dịch "Thuộc tính bị thiếu tiền tố không gian tên Android"
G. Kh.

3
Đây là một vấn đề nhật thực. Chỉ cần làm sạch dự án của bạn. Và hãy chắc chắn: xmlns: tools = " schemas.android.com/tools " cũng được bao gồm!
Gunnar Bernstein

24

Tôi khuyên bạn nên thêm mô tả nội dung.

android:contentDescription="@string/contentDescriptionXxxx"

Nhưng, hãy thực tế. Hầu hết mọi người không duy trì nghĩa đen cho khả năng tiếp cận. Tuy nhiên, với rất ít nỗ lực, bạn có thể thực hiện một cái gì đó để giúp đỡ người khuyết tật.

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

.

Điều quan trọng nhất mà người dùng mù sẽ cần biết là "Nút nào tôi cần nhấp để tiếp tục"

Sử dụng contentDescripAction cho mọi thứ có thể nhấp.

sử dụng contentDescripContent cho hình ảnh với thông tin (biểu đồ, textAsImage, ...)

sử dụng contentDescripUserContent cho tất cả nội dung do người dùng cung cấp.

sử dụng nội dung Mô tả sử dụng cho tất cả phần còn lại.


1
Cảm ơn! Luôn luôn là một lựa chọn tốt nhất để cung cấp mô tả này thay vì để ngăn chặn cảnh báo.
Vinicius Paldês

12

Vì nó chỉ là một cảnh báo bạn có thể ngăn chặn nó. Chuyển đến Bố cục đồ họa XML của bạn và làm điều này:

  1. Bấm vào nút đỏ góc trên bên phải

    nhập mô tả hình ảnh ở đây

  2. Chọn "Vô hiệu hóa loại sự cố" (ví dụ)

    nhập mô tả hình ảnh ở đây


4
Đúng, bạn có thể loại bỏ nó, nhưng có lẽ bạn nên làm theo lời khuyên của câu trả lời đã chọn, vì lợi ích của người dùng dựa vào các công cụ trợ năng mà Android cung cấp.
Kyle Falconer

Đây là nó!!! đó là những gì tôi đang tìm kiếm. Câu trả lời này và câu trả lời của @Gunnar Bernstein đã cho tôi biết.
IronBlieo

3

Nếu bạn muốn loại bỏ cảnh báo này theo cách thanh lịch (vì bạn chắc chắn rằng không cần truy cập cho ImageView cụ thể này), bạn có thể sử dụng thuộc tính đặc biệt:

android:importantForAccessibility="no"

2

Đi đến Gradletệp (ứng dụng mô-đun), thêm khối mã bên dưới

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

Không còn cảnh báo! mã hóa hạnh phúc


mã hóa hạnh phúc, nhưng lưu ý rằng điều này sẽ gây hại cho khả năng tiếp cận đối với những người thực sự dựa vào nó
Tôi là một con rồng ếch

1

Các widget phi văn bản cần một mô tả nội dung theo một số cách để mô tả văn bản hình ảnh để trình đọc màn hình có thể mô tả giao diện người dùng. Bạn có thể bỏ qua tài sản hoặc xác định tài sảnxmlns:tools="http://schemas.android.com/tools"
tools:ignore="contentDescription"
android:contentDescription="your description"


1

ContentDescriptioncần thiết cho khả năng truy cập Android. Riêng tính năng đọc màn hình. Nếu bạn không hỗ trợ khả năng truy cập Android, bạn có thể bỏ qua nó với thiết lập Lint .

Vì vậy, chỉ cần tạo ra lint.xml.

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

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

</lint>

Và đặt nó vào appthư mục.

nhập mô tả hình ảnh ở đây


1

Đối với các thành phần đồ họa hoàn toàn là trang trí, hãy đặt các thuộc tính XML tương ứng của android: contentDes mô tả thành "@null".

Nếu ứng dụng của bạn chỉ hỗ trợ các thiết bị chạy Android 4.1 (API cấp 16) trở lên, thay vào đó, bạn có thể đặt các thuộc tính XML của các yếu tố này: quan trọng cho các ứng dụng XML thành "không"


android: quan trọngForAccessibilty là chính xác những gì tôi đang tìm kiếm. Cảm ơn bạn!
Hrafn

Đây thực sự là câu trả lời chính xác và nên là câu trả lời hàng đầu.
từ

0

Vì tôi cần ImageView để thêm một biểu tượng chỉ vì tính thẩm mỹ mà tôi đã thêm vào tools:ignore="ContentDescription"trong mỗi ImageView mà tôi có trong tệp xml của mình.

Tôi không còn nhận được bất kỳ thông báo lỗi

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.