콘텐츠 라벨

스크린 리더와 같은 접근성 서비스의 사용자는 콘텐츠 라벨을 사용하여 인터페이스 내 요소의 의미를 이해합니다.

정보가 요소 내에서 시각적으로 전달되는 등의 일부 경우, 콘텐츠 라벨은 해당 요소와 관련된 의미나 작업에 대한 텍스트 설명을 제공합니다.

사용자 인터페이스의 요소가 콘텐츠 라벨을 제공하지 않는다면 일부 사용자가 제시된 정보를 이해하거나 인터페이스에서 작업을 실행하기 어려울 수 있습니다.

구현

View

인터페이스에 특정 유형의 Views가 사용되면 해당 View와 관련된 목적 또는 작업을 설명하는 콘텐츠 라벨을 제공해야 합니다.

콘텐츠 라벨 제공 방법

android:contentDescription

ImageView, ImageButton, CheckBox 또는 시각적으로 정보를 전달하는 다른 View를 사용할 때 android:contentDescription 속성을 사용하여 해당 View의 콘텐츠 라벨을 제공합니다.

콘텐츠 라벨은 런타임 시에만 사용할 수 있는 정보에 따라 다르기도 합니다. 또는 View의 의미는 시간이 지남에 따라 달라질 수도 있습니다. 예를 들어 재생 버튼은 음악 재생 중 일시중지 버튼으로 바뀔 수 있습니다. 이 경우 View#setContentDescription(CharSequence contentDescription)을 사용하여 적절한 시점에 콘텐츠 라벨을 업데이트하세요.

일반적으로 접근성 서비스가 ViewGroup을 설명하면 하위 View와 콘텐츠 라벨을 결합합니다. 이 동작을 재정의하고 해당 항목 및 포커스 가능하지 않은 하위 Views의 설명을 제공하고 있음을 나타내려면 ViewGroup에서 contentDescription을 설정하세요. ViewGroup에 설정할 때 contentDescription 내에 하위 Views의 콘텐츠 라벨을 포함해야 할 수 있습니다.

android:hint

EditTexts 또는 수정 가능한 TextViews의 경우 android:hint 속성을 사용하여 텍스트 입력란의 목적을 나타내세요. android:contentDescription수정 가능한 Views의 콘텐츠 라벨로 사용되어서는 안 됩니다.

android:labelFor

android:labelFor 속성을 사용하여 View가 다른 View의 콘텐츠 라벨로 동작해서는 안 됨을 나타내세요.

콘텐츠 라벨이 필요하지 않은 경우

다음과 같은 특정한 경우 콘텐츠 라벨이 제공되어서는 안 됩니다.

  • TextView(또는 서브클래스)에 렌더링된 텍스트는 자동으로 접근성 서비스에 제공됩니다. 보통 추가 콘텐츠 라벨이 필요하지 않습니다.
  • 장식 이미지 또는 시각적으로 의미 있는 정보를 전달하지 않는 이미지에는 콘텐츠 라벨이 필요하지 않습니다. 이 경우 "@null"android:contentDescription 속성이나 "no"android:importantForAccessibility 속성을 설정합니다.

자세히 알아보려면 Android 개발자 교육API 가이드에서 콘텐츠 라벨 구현에 대해 읽어 보세요.

Compose

인터페이스에 특정 유형의 컴포저블이 사용되면 해당 컴포저블과 관련된 목적 또는 작업을 설명하는 콘텐츠 라벨을 포함해야 합니다.

콘텐츠 라벨 제공 방법

콘텐츠 설명

Image, Icon 또는 그래픽 정보를 전달하는 다른 하위 수준 컴포저블에 대한 콘텐츠 라벨을 제공하려면 콘텐츠 설명을 설정하세요.

  • 콘텐츠 라벨은 런타임 정보에 따라 달라질 수 있으며, 컴포저블의 의미가 바뀔 수 있습니다. 예를 들어 재생 버튼은 음악 재생 중에 일시중지 버튼으로 바뀔 수 있습니다.

라벨 매개변수

TextField와 같은 일부 컴포저블은 선택적 label 매개변수를 지원합니다. 라벨이 설정되면 요소가 label에 전달된 컴포저블을 표시합니다. 접근성 서비스를 사용하여 컴포저블을 설명할 수 있습니다.

콘텐츠 라벨이 필요하지 않은 경우

다음과 같은 특정한 경우 콘텐츠 라벨이 추가되어서는 안 됩니다.

  • Text에서 렌더링된 텍스트나 Text를 포함하는 기타 컴포저블에서 렌더링된 텍스트는 자동으로 접근성 서비스에 제공됩니다.
  • 장식 이미지 또는 시각적으로 의미 있는 정보를 전달하지 않는 이미지입니다.
    • 이 경우 contentDescription 매개변수 또는 Modifier.semantics#contentDescription 속성을 null로 설정하거나 Modifier#clearAndSetSemantics를 호출하세요.

디자인

사용자 인터페이스를 디자인할 때 시각적으로 표시되는 콘텐츠가 접근성 서비스 사용자에게 어떻게 라벨링되어야 하는지 신중히 생각해 보세요. 콘텐츠 라벨은 다음 원칙을 따라야 합니다.

  • 간단명료하며 요소와 관련된 의미 또는 작업을 명확히 설명합니다.
  • 콘텐츠 라벨에 요소의 유형 또는 상태를 포함하지 않습니다.
  • 작업과 관련된 요소의 경우 시각적 표현이 아닌 작업을 설명합니다.
  • 요소와 구체적으로 어떻게 상호작용하는지 사용자에게 안내하지 않습니다.

자세히 알아보려면 Material Design 접근성 작성 가이드라인을 참고하세요.

테스트

앱의 사용자 인터페이스가 콘텐츠 라벨을 누락하지 않았는지 직접 확인하려면 다음 단계를 따르세요.

  1. Talkback을 사용 설정합니다.
  2. 앱을 엽니다.
  3. 선형 탐색 동작을 사용하여 접근성 포커스를 화면의 각 요소로 이동합니다.
  4. TalkBack이 일부 요소로 포커스를 이동하는데 해당 요소의 의미 있는 설명을 말하지 않거나 '라벨이 지정되지 않은' 메시지를 말하는 경우, 해당 요소의 콘텐츠 라벨이 누락된 것일 수 있습니다.

Android의 자동화된 테스트 도구는 누락된 콘텐츠 라벨을 감지할 수 있습니다. 기기에서 앱을 수동으로 테스트하려면 Android용 접근성 검사기 사용을 고려해 보세요. 자동 테스트를 이용하려면 EspressoRobolectric에서 접근성 확인을 사용 설정하세요.

검색
검색어 지우기
검색 닫기
기본 메뉴
587979228082578816
true
도움말 센터 검색
true
true
true
true
true
717068
false
false