흔하게 사용하는 ImageView에서 lint error가 발생하기 시작했다.

이유는 conteentDescription때문이였다.

android:contentDescription="TODO"

그래서 contentDescription에 대해서 알아보았다.


구성 요소와 역할

이녀석은 콘텐츠 라벨이라는 요소에 속해있다.
콘텐츠 라벨은 android:contentDescription, android:hint, android:labelFor로 이루어져있다.
이 콘텐츠 라벨의 역할은 앱의 요소가 시각적으로 이루어지는 경우 해당 요소에 대한 의미나 작업 정보를 텍스트 설명으로 전달해준다.


왜 사용하는가?

이미지를 보기 위해서 이미지 뷰를 사용하고 에디트 텍스트에서 힌트를 넣어 알려주는 일은 굉장히 흔하고 직관적이기 때문에 왜 굳이 사용하는가? 라는 생각을 했다.
하지만 생각하지도 못한 이유가 있었다.

시각 장애인분들을 위하여 필요한 요소였다.
만약 contentlabel이 달려있는경우 VoiceOver와 같은 TTS(음성으로 텍스트를 읽어주는)가 클릭하는 상황에서 보이스로 이 콘텐츠 라벨을 읽어준다.이와같이 장애인 접근에 훌륭한 도구가 된다.


해결

두가지 해결방안이 있다.

첫번째는 쉽게 린트에러를 제거하기 위해 contentdescription,hint,label을 달아주면 말끔하게 해결된다.

하지만 두번째
어플을 만들다보면 너무 많은 imageview와 edittext들을 사용하는데 모든 것에 콘텐츠 라벨을 달아주고
description에 전부 달아주기 위해서 string을 작성하는 것 또한 힘들것이다.
그럴땐 lint error 예외처리를 해주면된다.

안드로이드 스튜디오 - 설정 - 검색에 contentdescription을 검색하면 체크 해제를 할 수 있고 린트에러가 더이상 발생하지 않는다.

너무 단순하고 직관적이여서 굳이 포스팅할 필요까지? 라는 생각이 들지만

사용하는 이유를 보고 생각에 잠겨 배려하는 마음을 잊지 말자라는 생각에 작성하게 되었다.

profile
러닝커브를 따라서 등반중입니다.

0개의 댓글