본문 바로가기

Android

android:contentDescription 은 어디에 써먹을 수 있을까 ( Dump View Hierarchy 활용)

xml 요소 중에는 뭐에 써먹으면 좋을지 감이 안잡히는 것들이 꽤 있습니다. 오늘은 그 중

android:contentDescription을 살펴보겠습니다.


설정하기

레이아웃 XML에는 android:contentDescription을 지정할 수 있습니다.


XML

각각의 XML 엘리먼트마다 붙일 수 있는 속성인데, 예를 들면 아래와 같이 만들 수 있습니다.


JAVA

또는 자바코드에서 아래와 같이 지정해 줄수도 있습니다.


확인 방법

ScrollView와 TextView, 그리고 ImageView에 contentDescription을 지정해 주었습니다.

그리고 나서 앱 빌드 후 실행 - 아까 contentDescription을 지정해 준 뷰가 화면에 표시되게 앱에서 표시  - DDMS로 들어갑니다.

Dump View Hierarchy 를 선택합니다.



그러면 아래 화면이 표시됩니다.


우측의 창을 보면 ViewTree가 표시되는 것을 볼 수 있는데, 우측 하단 탭에서 아까 설정 해 준 contentDescription을 확인할 수 있습니다.



그냥 xml만 봐도 간단한데 굳이 이렇게 할 필요가 있을까요?

있습니다. 아래 화면을 보겠습니다.


복잡합니다. 실제 상용 앱은 이렇습니다. 어떤 뷰는 정적으로 만들어져서 (XML) 표시되고, 어떤 뷰는 동적으로 inflate되고, 상황에 따라 addView 같은 방법으로 뷰를 이리저리 옮기기도 합니다. 

이런 View 내용을 파악하거나, 개선작업을 할 때 contentDescription을 지정해 놓는다면 각 View를 구분하는데 큰 도움이 됩니다. 

신형 단말에서는 View id가 보이지만 구형단말에서는 보이지 않는데, 어떤 단말에서 되는지는 확인을 못했습니다. 즉 이 기능은 구형단말 또는 View id가 지정되지 않은 xml에서 가져온 View 또는 동적으로 생성되어 View id가 없는 View의 위치를 확인할 때 이용할 수 있습니다.

참고로, Dump View Hierarchy는 이렇게 마켓에 올라온, 사이닝 된 어플리케이션에도 적용가능합니다. 그렇게 때문에 윗분들이 멋진 앱을 가져오며 "야 너희도 이렇게 만들어와" 라고 할 때 다른 앱을 참고하기 위해 유용하게 이용할 수 있는 기능입니다.


개발자 화이팅