Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

TextView 자동 크기 조절

Android 8.0(API 레벨 26) 이상을 사용하면 TextView의 특성 및 경계에 따라 텍스트 크기를 자동으로 확장하거나 축소하여 레이아웃을 채우도록 TextView에 지시할 수 있습니다. 이 설정을 사용하면 동적 콘텐츠가 있는 다양한 화면의 텍스트 크기를 더 쉽게 최적화할 수 있습니다.

지원 라이브러리 26.0은 Android 8.0(API 레벨 26) 이전의 Android 버전을 실행하는 기기에서 TextView 자동 크기 조절 기능을 완벽하게 지원합니다. 라이브러리는 Android 4.0(API 레벨 14) 이상을 지원합니다. android.support.v4.widget 패키지에는 TextViewCompat 클래스가 포함되어 있어 이전 버전과 호환되는 방식으로 기능에 액세스할 수 있습니다.

TextView 자동 크기 조절 설정

프레임워크 또는 지원 라이브러리를 사용하여 프로그래매틱 방식으로 또는 XML에서 TextView 자동 크기 조절을 설정할 수 있습니다. XML 속성을 설정하기 위해 Android 스튜디오에서 Properties 창을 사용할 수도 있습니다.

다음과 같은 세 가지 방법으로 TextView 자동 크기 조절을 설정할 수 있습니다.

참고: XML 파일에서 자동 크기 조절을 설정했다면 TextViewlayout_width 또는 layout_height 속성에 'wrap_content' 값을 사용하지 않는 것이 좋습니다. 예기치 않은 결과가 발생할 수 있습니다.

기본

기본 설정을 사용하면 TextView 자동 크기 조절이 가로축 및 세로축에서 균일하게 조정됩니다.

  • 프로그래매틱 방식으로 기본 설정을 정의하려면 setAutoSizeTextTypeWithDefaults(int autoSizeTextType) 메서드를 호출하세요. 자동 크기 조절 기능을 끄려면 AUTO_SIZE_TEXT_TYPE_NONE을 지정하고 가로축 및 세로축을 균일하게 조정하려면 AUTO_SIZE_TEXT_TYPE_UNIFORM을 지정하세요.
  • 참고: 균일한 크기 조정의 기본 크기는 minTextSize = 12sp, maxTextSize = 112spgranularity = 1px.입니다.

  • XML에서 기본 설정을 정의하려면 android 네임스페이스를 사용하고 autoSizeTextType 속성을 none 또는 uniform으로 설정하세요.
  •     <?xml version="1.0" encoding="utf-8"?>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:autoSizeTextType="uniform" />
        

지원 라이브러리 사용

  • 지원 라이브러리를 통해 프로그래매틱 방식으로 기본 설정을 정의하려면 TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType) 메서드를 호출하세요. TextView 위젯의 인스턴스 및 TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE 또는 TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM과 같은 텍스트 유형 중 하나를 지정합니다.
  • 지원 라이브러리를 통해 XML에서 기본 설정을 정의하려면 app 네임스페이스를 사용하고 autoSizeTextType 속성을 none 또는 uniform으로 설정하세요.
  •     <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
          <TextView
              android:layout_width="match_parent"
              android:layout_height="200dp"
              app:autoSizeTextType="uniform" />
    
        </LinearLayout>
        

세부사항

최소 및 최대 텍스트 크기 범위와 각 단계의 크기를 지정하는 치수를 정의할 수 있습니다. TextView는 최소 및 최대 크기 속성 사이의 범위에서 균일하게 조정됩니다. 세부사항 속성에 설정된 단계 크기에 따라 각 증분이 발생합니다.

지원 라이브러리 사용

  • 지원 라이브러리를 통해 프로그래매틱 방식으로 텍스트 크기 범위 및 치수를 정의하려면 TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit) 메서드를 호출하세요. 최대값, 최소값, 상세 값 및 TypedValue 치수 단위를 지정합니다.
  • 지원 라이브러리를 통해 XML에서 텍스트 크기 범위 및 치수를 정의하려면 app 네임스페이스를 사용하고 레이아웃 XML 파일에서 autoSizeText, autoSizeMinTextSize, autoSizeMaxTextSizeautoSizeStepGranularity 속성을 설정하세요.
  •     <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
          <TextView
              android:layout_width="match_parent"
              android:layout_height="200dp"
              app:autoSizeTextType="uniform"
              app:autoSizeMinTextSize="12sp"
              app:autoSizeMaxTextSize="100sp"
              app:autoSizeStepGranularity="2sp" />
    
        </LinearLayout>
        

미리 설정된 크기

미리 설정된 크기를 사용하면 TextView가 텍스트 자동 크기 조절 시 자동으로 선택하는 모든 값을 지정할 수 있습니다.

  • 미리 설정된 크기를 사용하여 프로그래매틱 방식으로 TextView 자동 크기 조절을 설정하려면 setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit) 메서드를 호출하세요. 크기 배열 및 크기의 TypedValue 치수 단위를 지정합니다.
  • 미리 설정된 크기를 사용하여 XML에서 TextView 자동 크기 조절을 설정하려면 android 네임스페이스를 사용하고 다음 속성을 설정하세요.
    • autoSizeText 속성을 none 또는 uniform으로 설정합니다. none은 기본값이며 uniform을 지정하면 TextView가 가로축 및 세로축에서 균일하게 조정됩니다.
    • autoSizePresetSizes 속성을 미리 설정된 크기의 배열로 설정합니다. 리소스인 배열에 액세스하려면 res/values/arrays.xml 파일에서 배열을 정의하세요.
  •     <resources>
          <array name="autosize_text_sizes">
            <item>10sp</item>
            <item>12sp</item>
            <item>20sp</item>
            <item>40sp</item>
            <item>100sp</item>
          </array>
        </resources>
        
        <?xml version="1.0" encoding="utf-8"?>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:autoSizeTextType="uniform"
            android:autoSizePresetSizes="@array/autosize_text_sizes" />
        

지원 라이브러리 사용

  • 미리 설정된 크기를 사용하여 지원 라이브러리를 통해 프로그래매틱 방식으로 TextView 자동 크기 조절을 설정하려면 TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit) 메서드를 호출하세요. TextView 클래스의 인스턴스, 크기 배열 및 크기의 TypedValue 치수 단위를 지정합니다.
  • 미리 설정된 크기를 사용하여 지원 라이브러리를 통해 XML에서 TextView 자동 크기 조절을 설정하려면 app 네임스페이스를 사용하고 레이아웃 XML 파일에서 autoSizeTextautoSizePresetSizes 속성을 설정하세요.
  •     <resources>
          <array name="autosize_text_sizes">
            <item>10sp</item>
            <item>12sp</item>
            <item>20sp</item>
            <item>40sp</item>
            <item>100sp</item>
          </array>
        </resources>
        
        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
          <TextView
              android:layout_width="match_parent"
              android:layout_height="200dp"
              app:autoSizeTextType="uniform"
              app:autoSizePresetSizes="@array/autosize_text_sizes" />
        </LinearLayout>
        

참고 자료

동적 콘텐츠 작업 시 TextView 자동 크기 조절에 관한 자세한 내용은 TextView 자동 크기 조절을 시청하세요.