Nuke Olaf - Log Store

[Android] 안드로이드 - "textSize" 속성값에 sp 단위를 권장하는 이유 본문

Android

[Android] 안드로이드 - "textSize" 속성값에 sp 단위를 권장하는 이유

NukeOlaf 2019. 11. 23. 17:42

TextView를 사용할 때 가장 많이 수행하는 작업 중 하나가 바로 TextView에 출력되는 텍스트의 크기를 변경하는 것이다.

TextView의 쓰임에 따라 텍스트 크기를 다양하게 변경할 필요가 있는데, 이 때 "textSize" 속성을 사용한다.

* android:textSize - 텍스트의 크기 지정.

> 치수(dimension) 단위 사용 가능. px, dp, sp, in, mm

> sp(scaled pixel) 단위 사용을 권장. (예. 15sp, 14.5sp, ...)

> 관련 함수 : setTextSize()

 

textSize 속성 값에는 여러가지 단위를 사용할 수 있다. 어떤 단위의 값을 사용할 것인지는 개발자의 선택이지만,

구글에서는 공식적으로 치수(dimension)와 관련된 곳에는 dp(density-independent pixel)와 sp(scaled pixel)를 사용하도록 권장(recommend)하고 있다. 특히, 텍스트 출력과 관련된 단위는 sp를 사용하도록 권장하는데, 이유는 시스템 설정에 따른 가독성 때문이다.

(dp는 현재 사용 중인 디바이스에 의해 결정되지만, sp는 시스템 설정(글꼴 크기)에도 영향을 받는다. 즉, sp의 "scaled"라는 의미는 디바이스에 의해 결정되는 절대 값이 아니라 시스템 글꼴에 따라 비례한(scaled) 값이 적용된다는 것)

 

 < sp 단위를 사용해야 하는 이유 >

그런데 이러한 sp는 왜 사용해야 하는 것일까요? 그냥 dp만 사용하면 안될까요? dp 단위를 이해하는 것만도 충분히 복잡한데 말이죠.

가장 큰 이유는 텍스트의 가독성 때문입니다. 보통 화면의 글자들이 작아서 잘 안보이는 사람들을 위해, 안드로이드는 시스템 전체 글꼴 크기를 "크게 또는 "아주 크게"로 변경할 수 있도록 만들었습니다. 반대로 화면의 글자들이 작은 것을 선호하는 사람들을 위해 기본 크기에 비례하여 "작게"로도 변경할 수 있도록 해놓았습니다.

sp를 적용하면 글꼴 크기 설정에 따라 텍스트 크기가 자동으로 조절(scaled)되지만 dp는 이런 설정에 영향을 받지 않죠. 그래서 TextView에는 sp를 사용하길 권장하는 것입니다. (당연하게도 시스템 글꼴 크기 설정과 관계없이 일정한 크기의 텍스트가 출력되길 바란다면 dp 단위를 사용하면 되겠죠.)

 

https://recipes4dev.tistory.com/56

불러오는 중입니다...

 

Comments