font size DP 선언
이전 포스팅에서도 정리한 적이 있지만
dp
는 물리적인 디스플레이 해상도에 영향을 받지 않기 때문에 해상도에 따라 맞춰주지 않아도 된다.
반면, sp
의 경우는 dp와 유사하지만 물리적인 디스플레이 해상도에 영향을 받는다.
그렇기 때문에 해상도에 영향을 받지 않으려면 dp
로 TextSize를 정해주면 된다
(Galaxy S8 기준) 안드로이드 설정-> 디스플레이 -> 글자 크기와 스타일에 들어가면 글자 크기를 조절할 수 있는데, 부끄럽게도 이번에 처음 확인을 해보았다.
결과는 대참사가 일어났다. UI는 뒤죽박죽이 되었고, 심지어 잘려서 보이지 않는 텍스트가 발생했다.
부랴부랴 TextSize를 dp
로 변경했지만, 내가 놓친 부분이 2개나 있었다.
TextView가 programmatically로 생성했을 경우
xml이 아니라 소스코드에서 TextView에 TextSize를 적용한 경우
val tv = TextView(context!!)
val params = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT)
tv.layoutParams = params
tv.textSize = 17F
위와 같이 tv.textSize = 17F
로 선언되어있으면 해상도에 영향을 받는다.
val tv = TextView(context!!)
val params = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT)
tv.layoutParams = params
tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17f)
TextSize를 Float으로 선언한 부분을,
간단하게 tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 17f)
DP를 선언해서 Size를 주었다.
WebView
WebView안에 TextSize도 해상도에 영향을 받는다
다 적용했다고 생각했지만, WebView의 Text도 영향을 받는다는 사실을 잊고 있었다.
역시나 WebView의 Text도 엉망진창, 심지어 잘려서 안 보이는 텍스트도 있었다.
WebView의 설정도 생각보다 매우 간단하다.
webView.settings.textZoom = 100
이 부분만 추가해주면 끝이다. 위 사진에서 보이는 것 처럼 setTextZoom
의 기본값인 100을 넣어주었다.
API버전이 14보다 낮은 것이 포함되어 있다면 아래의 조건문만 걸어주면 된다.
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH)
webView.settings.textZoom = 100
해상도에 관해선 따로 신경을 쓰고 있지 않아서 이런 현상이 발생한 것 같다..
개발할 때 조금 더 신중해야겠다
'📱 Android' 카테고리의 다른 글
[Android] Proguard 적용하기 (0) | 2020.08.30 |
---|---|
[Android/kotlin] 특정 위치로 스크롤하기 (0) | 2020.08.12 |
[Android] MPAndroidChart BarChart 사용하기 (0) | 2020.05.17 |
[Android] Lottie Animation 적용하기 (0) | 2019.12.31 |
[Android / Kotlin] Custom SeekBar (0) | 2019.11.15 |