본문 바로가기

나의 플랫폼/안드로이드

[Android] TextSize에서 sp와 dp를 사용할 때!

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

TextSize를 설정할 때, 항상 전 sp를 사용 했습니다. sp는 글자 크기를 정의해주는 수치라고 알고 있었기 때문입니다. 하지만 여기서   

꼭! 알고 가셔야 할 점이 있습니다.


sp는 안드로이드 시스템 글자 크기에 적용 된다!!!


위 말이 무슨 말 이냐 하면, 안드로이드 설정 -> 디스플레이 -> 글자크기 로 이동을 하면 작게 부터 아주 크게 까지 앱 외적으로 글자 크기를 조절 할 수 있습니다. (연령층이 높으신 분을 위해 만들어 놓은 걸로 알고 있습니다.) 이 부분을 변경할 경우! sp로 텍스트 사이즈가 정의 되어 있으면, 그 설정에 따라 앱 텍스트도 커져 버려 UI가 깨저버리는 현상이 발생 합니다.


만약, 그 글자크기에 따라 앱 UI를 변경하시는 분들은 신경쓰지 않으셔도 됩니다. 저 같이 글자 크기를 한가지 형태로만 잡고

진행하고자 하시는 분들은 아래 팁을 이용하세요.


## 글자 크기 고정 방법!!


sp 대신 dp를 사용한다.!!!


모두 아시겠지만, Text도 알고 보면 그림 입니다. 따라서 제가 테스트 해본 결과 textsize를 dp로 넣을 경우 해상도에 따라 텍스트 크기는 변하지만, 시스템 설정에서 정의한 글자 크기로는 적용 되지 않습니다.


## Dp로 설정하는 여러가지 방법

1. xml

    여기선, 우선 dimen으로 아래와 같이 정의 하세요.

<dimen name="_10sp">10dp</dimen>

   그리고 textsize를 아래와 같이 사용합니다.

android:textSize="@dimen/_10sp"

그럼 추후 변경이 있을 경우에 dimen 부분만 변경하면 좋겠죠! ㅎ


2. java


setTextSize(TypedValue.COMPLEX_UNIT_DIP, 숫자) 


위와 같이 사용하시면 됩니다.


http://www.masterqna.com/android/5711/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B8%80%EA%BC%B4%ED%81%AC%EA%B8%B0%EC%97%90-%EC%83%81%EA%B4%80%EC%97%86%EC%9D%B4-%ED%85%8D%EC%8A%A4%ED%8A%B8%ED%81%AC%EA%B8%B0-%EC%A7%80%EC%A0%95%ED%95%98%EB%8A%94%EB%B2%95-%EC%A7%88%EB%AC%B8-addview


3. webview

웹뷰 또한 시스템 글자 크기에 따라 자동으로 변경이 됩니다.

         
WebView webview = (WebView) findViewById(R.id.webview);
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
  if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH)
      settings.setTextZoom(100);


위와 같이 setTextZoom에 100을 넣으면 고정된 값으로 나오는 것을 확인 하실 수 있습니다.


http://1004lucifer.blogspot.kr/2015/05/android-webview-lollipop.html



좋은 팁이 됐으면 좋겠네요.

감사합니다.


## 이블로그는 어디까지는 찾았던 부분을 잊지 않기 위해 올려놓은 것 입니다.

    내용이 부실해도 이해해 주시길 바랍니다.