IT

다른 화면에 대해 텍스트보기의 텍스트 크기를 동적으로 설정하는 방법

lottoking 2020. 6. 23. 07:02
반응형

다른 화면에 대해 텍스트보기의 텍스트 크기를 동적으로 설정하는 방법 [중복]


텍스트보기를 만들고 레이아웃에 동적으로 추가하고 있습니다. 내가 사용하고 textView.setTextSize(18)size.I는 삼성 태블릿에 그것을 테스트 및 글꼴 크기가이 화면에 너무 작 나는 25에 TEXTSIZE 변경된 것을 발견 텍스트를 설정하는 방법을하지만 에뮬레이터 (* 800 480)에 대한 너무 큽니다. 내 문제는 모든 화면에 맞게 텍스트 크기를 동적으로 설정하는 것입니다.


다음과 같은 리소스 폴더를 사용해야합니다.

values-ldpi
values-mdpi
values-hdpi

그리고 각 범위에 대해 'dimensions.xml'파일에 텍스트 크기를 씁니다.

그리고 자바 코드에서 텍스트 크기를 설정할 수 있습니다

textView.setTextSize(getResources().getDimension(R.dimen.textsize));

샘플 dimension.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="textsize">15sp</dimen>
</resources>

편집 : 그리고 지금 StackOverflow에서 검색 할 때이 질문이 중복 되는 것을 발견했습니다 : 이것이것

이와 같은 setTextSize(unit, size)단위로 다른 기능을 사용해야 SP합니다.

tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18f);

TypedValue 상수에 대한 자세한 내용을 읽으십시오 .


이 경우에는 ldpi, mdpi또는 hdpi한정자 를 사용할 필요가 없습니다 .

리소스 파일에서 치수를 정의 할 때 측정 단위가 포함됩니다. sp 단위를 사용하는 경우 화면 밀도에 따라 크기가 조정되므로 15sp의 텍스트는 밀도가 다른 화면에서 거의 동일한 크기로 표시됩니다.
(Android가 화면 밀도를 120, 160, 240, 320, 480 and 640 dpi그룹 으로 일반화함에 따라 기기의 실제 화면 밀도는 정확히 일치하지 않습니다 .)

호출 getResources().getDimension(R.dimen.textsize)하면 크기를 픽셀 단위로 반환합니다. sp를 사용하면 화면 밀도에 따라 크기가 조정됩니다.

호출 setText(float)은에서 크기를 설정합니다 sp units. 이것은 문제가있는 곳입니다.
, 한 손으로 픽셀을 측정 sp unit하고 다른 한 손으로 이것을 해결하십시오.

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

사용할 수도 있습니다

getResources().getDimensionPixelSize(R.dimen.textSize);

대신 getDimension()반올림하고 분수가 아닌 값으로 변환합니다.


오랜 시간이 흐른 후 마침내 이런 식으로 해결

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

dimen이 같은 폴더를 만들res/values/dimensions.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

  <dimen name="textsize">8sp</dimen>

 </resources>

Style.xml에서 스타일을 미리 정의하십시오.

<style name="largeText">
    <item name="android:textAppearance">@android:style/TextAppearance.Large.Inverse</item>
    <item name="android:textStyle">bold</item>
</style>

코드에서 :

text.setTextAppearance(context, R.style.largeText);

텍스트 크기를 설정하려면 textView.setTextSize (float size) 메서드를 사용해야한다고 생각합니다. textView.setText (arg)는 텍스트보기에서 텍스트를 설정하는 데 사용됩니다.


float currentSize = textEdit.getTextSize(); // default size
float newSize = currentSize * 2.0F; // new size is twice bigger than default one
textEdit.setTextSize(newSize);

참고URL : https://stackoverflow.com/questions/9494037/how-to-set-text-size-of-textview-dynamically-for-different-screens

반응형