XML에서 '이미지에 contentDescription 속성 누락'


222

이클립스의 이미지[Accessibility] Missing contentDescription 속성에 대한 경고가 표시 됩니다. 이 경고는 ImageView아래 XML 코드에서 5 행 (declare )에 표시 됩니다.

내 응용 프로그램을 빌드하고 실행할 때 오류가 발생하지 않습니다. 그러나 나는 왜이 경고가 나타나는지 알고 싶습니다.

이것은 내 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
않으며

네 맞아요
Rahul Kushwaha

답변:


269

해결책을 보려면이 링크를 따르십시오 : Android Lint contentDescription 경고

내 ImageView에 android : contentDescription 속성을 설정하여이 경고를 해결했습니다.

android : contentDescription = "@ string / desc"

ADT 16의 Android Lint 지원은 이미지 위젯이 컨텐츠를 제공하도록하기 위해이 경고를 발생시킵니다.

뷰의 내용을 간략하게 설명하는 텍스트를 정의합니다. 이 속성은 주로 접근성을 위해 사용됩니다. 일부 뷰에는 텍스트 표현이 없으므로이 속성을 사용하여 해당 속성을 제공 할 수 있습니다.

ImageViews 및 ImageButtons와 같은 텍스트가 아닌 위젯은 contentDescription 속성을 사용하여 화면 판독기 및 기타 내게 필요한 옵션 도구가 사용자 인터페이스를 적절히 설명 할 수 있도록 위젯에 대한 텍스트 설명을 지정해야합니다.

설명을위한이 링크 : 접근성, 영향 및 개발 리소스

많은 Android 사용자는 다양한 방식으로 Android 기기와 상호 작용해야하는 장애가 있습니다. 여기에는 터치 스크린을 완전히 보거나 사용하지 못하게하는 시각, 신체 또는 연령 관련 장애가있는 사용자가 포함됩니다.

Android는 접근성 기능과 서비스를 제공하여 이러한 사용자가 텍스트 음성 변환, 햅틱 피드백, 트랙볼 및 경험을 향상시키는 D 패드 탐색을 포함하여 장치를보다 쉽게 ​​탐색 할 수 있도록합니다. Android 애플리케이션 개발자는 이러한 서비스를 활용하여 애플리케이션의 액세스 가능성을 높이고 자체 접근성 서비스를 구축 할 수 있습니다.

이 가이드는 앱의 접근성을 높이기위한 것입니다.

특히 프레임 워크 제공 사용자 인터페이스 구성 요소를 사용하는 경우 모든 사용자가 응용 프로그램에 액세스 할 수 있도록하는 것이 비교적 쉽습니다. 응용 프로그램에 이러한 표준 구성 요소 만 사용하는 경우 응용 프로그램에 액세스 할 수 있도록 몇 단계 만 수행하면됩니다.

  1. android : contentDescription 속성을 사용 하여 ImageButton , ImageView , EditText , CheckBox 및 기타 사용자 인터페이스 컨트롤에 레이블을 지정하십시오 .

  2. 트랙볼 또는 D 패드와 같은 방향성 컨트롤러를 사용하여 모든 사용자 인터페이스 요소에 액세스 할 수 있도록하십시오.

  3. 음성 안내 지원 및 터치하여 탐색과 같은 접근성 서비스를 설정하여 애플리케이션을 테스트하고 방향성 컨트롤 만 사용하여 애플리케이션을 사용해보십시오.


92
하나 더 중요한 메모! 이 경우 이미지는 순전히 장식적인 것으로 보이며 사용자에게 추가 정보를 제공하지 않습니다. 예를 들어, 사용자에게 "이미지 연락"을 말하고 싶지 않지만 다른 곳에 텍스트를 표시하지 않으면 "밥의 프로필 사진"을 말하고 싶을 수 있습니다. 사용자에게 이미지를 말하지 않아야하는 경우 android : contentDescription = "@ null"을 설정하면 경고가 사라집니다.
alanv

1
@alanv : 좋은 의견. 일반적으로 권장되는대로 경고를 완전히 비활성화하는 것보다 훨씬 낫습니다.
ChiefTwoPencils

13
실제로 android : contentDescription = "@ null"이 최선의 해결책이라고 생각하지 않습니다. tools : ignore = "ContentDescription"을 사용하고 있습니다. 루트 레이아웃에 xmlns : tools = " schemas.android.com/tools " 를 포함시켜야 합니다.
Sotti

좋은 문서를 제공해 주셔서 감사합니다. 당신은 월페이퍼 갤러리 앱과 같은 이미지가있을 때 모든 이미지에 대한 내용 설명을 추가하는 것이 적합합니까? 또한 앱 성능에 영향을 줄 수 있습니까?
Rahul Mandaliya

67

android:contentDescription="@string/description"ImageView에 (정적 또는 동적)을 추가하십시오 . 메시지를 무시하거나 필터링하지 마십시오. 음성으로 인해 대체 입력 방법을 사용하는 사람들에게 유용합니다 (TalkBack, Tecla Access Shield 등).


@ Jeroen- 설명을 추가하면 "자원 @ string / loginText를 확인할 수 없습니다"라는 메시지가 나타납니다. 왜 그런가요?
자말 자파르

문자열 XML에 loginText 문자열이 있습니까?
Praveen

1
@JamalZafar는 loginText라는 이름으로 string.xml에 문자열을 만듭니다.
Ayush Goyal

36

업데이트 :

주석에서 지적한 바와 같이 설명을 null로 설정하면 이미지가 순전히 장식 적이며 음성 안내 지원과 같은 화면 판독기에서 이해할 수 있음을 나타냅니다.

이전 답변, 더 이상이 답변을 지원하지 않습니다.

경고를 피하는 방법을 찾는 모든 사람들에게 :

android:contentDescription="@null"최선의 해결책 이라고 생각하지 않습니다 .

나는 그것을 사용 tools:ignore="ContentDescription"하려고합니다.

xmlns:tools="http://schemas.android.com/tools"루트 레이아웃에 포함시켜야 합니다.


1
이것도 구글이 추천 한 것이기 때문에 공표되어야한다
Le Dinh Nhat Khanh

4
내용으로 사용 설명 @null은이 이미지가 순전히 장식 적이라고 명시 적으로 표현하는 방법입니다. 단순히 경고를 무시하는 것은 올바른 해결책이 아닙니다.
karl

1
를 사용 @null하면 이미지가 장식 적이라고 음성 안내 지원에 알립니다. @null음성 안내 지원 에 정보가 누락되었다고 생각하게하기보다는 알리는 것이므로 경고를 무시해서는 안됩니다 .
Ab의

10

더하다

tools:ignore="ContentDescription"

당신의 이미지에. xmlns:tools="http://schemas.android.com/tools" .루트 레이아웃 을 가지고 있는지 확인하십시오 .


1
+1. 이것은이 문제에 대한 Android Studio의 수정입니다 (코드 분석을 수행 할 때 "보조 린트"버튼이 바로 작동 함)
noamgot

9

경고는 실제로 성가 시며 많은 경우 (대부분의 경우) 다양한 장식용 ImageView에 내용이 필요하지 않습니다. 문제를 해결하는 가장 근본적인 방법은 Lint에게이 검사를 무시하도록 지시하는 것입니다. Eclipse에서 환경 설정의 "Android / Lint 오류 검사"로 이동하여 "contentDescription"( "접근성"그룹에 있음)을 찾은 다음 "심각도 :"를 무시로 변경하십시오.


9
이 경고를 무시하지 마십시오. 다른 사람들이 지적했듯이 접근성이 중요한 이미지 일지라도 접근성은 중요합니다. 원하는 콘텐츠를 추가하는 것은 별 의미가 없습니다.
jamesc

1
앱이 콘텐츠 설명을 통해서도 액세스 할 수없는 경고 인 경우 경고를 무시해도됩니다. 예를 들어, contentDescription시력이 필요한 게임에서 귀찮게하는 이유는 무엇입니까?
CorayThan

네, 있습니다 급진적 인 선택; 그 목적을 알고 준수하고 싶은 사람들은 무엇을 하는가? 나는이 특별한 경우에, "대부분의"경우를 잊어 버리겠다고 말하고 싶었다. 예를 들어, "대부분의"사람들이 눈먼 것이 아니기 때문에 불필요한 경고라고 생각하지 않습니까? 이미지의 "대부분"에 그러한 내용이 필요하지 않으면 경고를 비활성화하고 의미가있는 곳에 추가하십시오. 조금 도움이되는 것은 먼 길을 갈 수 있습니다.
ChiefTwoPencils

9

전혀 신경 쓰지 않으면이 작업을 수행하십시오.

    android:contentDescription="@null"

수용 된 솔루션에 조언을 해주지 만 이것은 해킹입니다.


3
실제로 android : contentDescription = "@ null"이 최선의 해결책이라고 생각하지 않습니다. tools : ignore = "ContentDescription"을 사용하고 있습니다. 루트 레이아웃에 xmlns : tools = " schemas.android.com/tools " 를 포함시켜야 합니다.
Sotti

아무도 그렇게 말하지 않았습니다. 주석을 다시 읽으십시오. 제공하는 솔루션이 확실히 더 나쁘게 경고를 무시하기 만하면됩니다. 가장 많이받는 답변을 다시 읽으십시오.
alap

5

순전히 장식적인 그래픽 요소의 경우 가장 좋은 해결책은 다음을 사용하는 것입니다.

android:importantForAccessibility="no"

낮은 버전을 실행하는 기기는이 속성을 무시하므로 최소 SDK 버전이 16 이상인 경우이 방법이 적합합니다.

이전 버전을 지원하지 않으면 다른 사람들이 이미 지적한 것처럼 사용해야합니다.

android:contentDescription="@null"

출처 : https://developer.android.com/guide/topics/ui/accessibility/apps#label-elements


2

이 경고는 응용 프로그램의 접근성을 향상 시키려고합니다.

전체 프로젝트에서 누락 된 컨텐츠 설명 경고를 사용하지 않으려면이를 애플리케이션 모듈 build.gradle에 추가 할 수 있습니다.

android {

    ...

    lintOptions {
        disable 'ContentDescription'
    }
}

0

이미지 설명이 정의되지 않았으므로 경고를 표시합니다.

아래 코드를 Strings.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>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.