Android TextView 자동 크기 조절하는 방법
TextView 자동 크기 조절 ?
스마트폰마다 레이아웃이 달라지기 때문에 하드코딩으로 글씨 크기를 설정하면 큰 화면에서도 그 사이즈를 유지하기에 잘 안보일 수 있다. 또한, 여러 글씨 크기의 사이즈를 만들고 서비스를 만들어도 유연성있게 대처하기에는 한계가 명확하다.
그렇기에 TextView 의 자동 크기 조절을 통해 화면에 따라 유연하게 변한다면 서비스 이용자에게 편리함을 제공할 수 있을 것이다.
TextView 자동 크기 조절
아래의 코드로 예를 들어보자
//xml 방식
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:autoSizeTextType="uniform"
android:autoSizeMinTextSize="12sp"
android:autoSizeMaxTextSize="100sp"
android:autoSizeStepGranularity="2sp" />
//코딩 방식
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)
//autoSizeTextType - TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE 또는 TextViewCompatAUTO_SIZE_TEXT_TYPE_UNIFORM
- autoSizeTextType 을 uniform 으로 설정
- 가장 작은 크기인 12sp ~ 100sp 까지 설정하고 stepGranularity를 2sp 단위로 레이아웃에 맞게 자동으로 텍스트 사이즈가 변경되도록 만들 수 있다.
미리 설정된 크기를 불러와서 사용할 수 있다.
//xml 방식
<resources>
<array name="autosize_text_sizes">
<item>12sp</item>
<item>14sp</item>
<item>16sp</item>
<item>20sp</item>
<item>30sp</item>
</array>
</resources>
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:autoSizeTextType="uniform"
android:autoSizePresetSizes="@array/autosize_text_sizes" />
- res/values/arrays.xml 파일을 만들고 원하는 텍스트 크기를 미리 만든다.
- TextView 에서 autoSizePresetSizes 를 통해 미리 정해진 값을 불러오면 된다.
참고자료
- 구글 TextView 자동 크기 설정 공식문서 참조
TextView 자동 크기 조절은 API 26 이상의 버전을 사용 지원 라이브러리 26.0은 이전의 안드로이드 버전을 실행하는 기기에서 크기 조절 기능을 제공함(API 14.0 이상) android.support.widget 패키지의 TextViewCompat 클래스가 포함되어 있어서 이전의 방식과 호환됨
결론
- 구글 공식 개발 문서를 사랑합시다.