블로그 이미지
App 개발에 대한 내용을 다룰 예정입니다. AppleSherbet

카테고리

분류 전체보기 (39)
한국프로야구 어플 (18)
세미나 (2)
Java Development (13)
Android App소개 (3)
기타 (2)
당근마켓 (1)
Total299,563
Today15
Yesterday32
안드로이드 개발을 하다보면 다양한 폰들의 해상도에 맞게 UI를 구성하는데 많은 어려움을 느낀다.
결과적으론 최대한 리소스들을 xml 로 정의하고 해상도에 맞게 폴더를 나누어 주어야하는데
가끔 그게 어려울때가 있다. 즉, 동적으로 리소스를 불러 사용하는 경우가 그런 경우이다.
그 중  text size에 관련해서 dimens.xml 파일에서 리소스를 가져와 setTextSize를 해주는데 Text가 의도한거보다 훨씬 크게 나오는 문제가 있어서 
오늘도 여느때처럼 폭풍 구글링을 하였다. ㅋㅋ TextSize의 경우 다음처럼 처리해주면 된다.

value-xhdpi/dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--  Record table row size -->
    <dimen name="record_row_height">24dp</dimen>
    <dimen name="record_default_text">15dip</dimen>
</resources>

이렇게 고해상도용 리소스를 정의한다. 물론 value-hdpi 폴더에도 같은 dimens.xml을 정의해줘야한다.
이렇게 하고 소스상에서 해당리소스를 사용할땐
tv_w1.setTextSize(TypedValue.COMPLEX_UNIT_PX, res.getDimension(R.dimen.record_default_text));
이렇게 현재 세팅하는 리소스가 pixel이라고 명시해줘야한다. 왜그럴까? 
이것때문에 계속 해깔려서 글씨 크기가 크게 나오는 문제가 있었다. 문제는  getDimension() 메소듣가 pixel 형태로 리턴하기 때문이다.
우리가 dimens.xml에 dip라고 명시해 줬기 때문에 getDimension()은 알아서 pixel로 변환해서 리턴해준다.
그런데 setTextSize 메소드는 기본 단위가 pixel이 아닌 sp 라서 문제가 되는것이다.
아무튼 이렇게 하니 정상적으로 글자크기가 나왔다.. 별거 아닌거였는데...ㅋㅋ

 
저작자 표시
신고
Posted by AppleSherbet

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

티스토리 툴바