IT Share you

프로그래밍 방식으로 textSize 설정

shareyou 2021. 1. 9. 10:52
반응형

프로그래밍 방식으로 textSize 설정


textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.result_font));

다음 코드는 작동하지만 R.dimen.result_font실제보다 훨씬 더 큰 값으로 간주됩니다. 화면 크기에 따라 18sp-22sp 또는 24sp 정도일 수 있습니다.하지만 여기에서 설정 한 크기는 약 50sp 이상입니다. 누군가가 뭔가를 추천 해 주시겠습니까?


리소스에서 dimen 값을 반환하고 암시 적 으로 px 로 변환 TypedValue.COMPLEX_UNIT_PX되기 때문에 로 변경해야합니다 .getDimension(id)

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 
           getResources().getDimension(R.dimen.result_font));

요구 사항

리소스 파일에서 프로그래밍 방식으로 textView 크기를 설정한다고 가정합니다.

차원 리소스 파일 (res / values ​​/ dimens.xml)

<resources>     
   <dimen name="result_font">16sp</dimen>
</resources>

해결책

먼저 리소스 파일에서 "textSizeInSp"변수로 dimen 값을 가져옵니다 .

int textSizeInSp = (int) getResources().getDimension(R.dimen.result_font);

다음으로 16 sp 값을 동일한 픽셀로 변환 합니다.

그것을 위해 방법을 만듭니다.

 public static float convertSpToPixels(float sp, Context context) {
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, context.getResources().getDisplayMetrics());
}

TextSize를 설정하겠습니다.

textView.setTextSize(convertSpToPixels(textSizeInSp , getApplicationContext()));

모두 함께,

int textSizeInSp = (int) getResources().getDimension(R.dimen.result_font);
textView.setTextSize(convertSpToPixels(textSizeInSp , getApplicationContext()));

참조 URL : https://stackoverflow.com/questions/20364993/setting-textsize-programmatically

반응형