[android] XML에서 차원 가져 오기 및 런타임에서 텍스트 크기 설정
dimens.xml에는 다음이 있습니다.
<dimen name="text_medium">18sp</dimen>
런타임에서이 값을 얻고 텍스트보기의 텍스트 크기를 설정합니다.
int size = context.getResources().getDimensionPixelSize(R.dimen.text_medium);
textView.setTextSize(size).
10 인치 태블릿 (1280 x 800)에서는 모든 것이 정상입니다. 그러나 전화 (800 x 480)에서는 텍스트보기에 매우 큰 글꼴이 있습니다. 태블릿에서 크기는 18입니다. 전화로는 27 세입니다.
다음과 같이 수동으로 크기를 설정하는 경우 :
textView.setTextSize(size)
크기는 두 장치 모두에서 정상입니다.
답변
<dimen name="text_medium">18sp</dimen>
코드에서 크기를 설정하십시오.
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.text_medium));
답변
getDimensionPixelSize () 및 getDimension () 두 메서드 모두 화면 밀도를 사용하여 픽셀을 계산합니다. 전화기 화면 밀도는 분명히 hdpi (240dpi)이므로 1.5 스케일을 사용하여 dp를 sp로 변환합니다. 간단한 수학 18 * 1.5 = 27.
태블릿 밀도는 mdpi (160dpi)이므로 배율은 1 : 1에 불과합니다.
그러나 두 텍스트의 실제 크기를 비교하면 동일해야합니다.
가장 좋은 방법은 전화의 경우 값 폴더에 하나, 태블릿의 경우 values-sw600dp에 두 개의 dimens.xml 파일을 만드는 것입니다 (value-sw720dp-land 폴더를 사용하여 가로 방향으로 10 인치 태블릿의 크기를 저장할 수도 있습니다).
Android의 치수에 대한 자세한 내용은 http://android4beginners.com/2013/07/appendix-c-everything-about-sizes-and-dimensions-in-android/ 에서 읽을 수 있습니다.