TextView 자동 크기 조절

Android 8.0 (API 수준 26) 이상에서는 TextView - 텍스트 크기 허용 자동으로 확장 또는 축소하여 TextView의 특성 및 경계 이 설정을 사용하면 동적 콘텐츠를 사용하여 다양한 화면에서 텍스트 크기를 최적화합니다.

지원 라이브러리 26.0은 TextView 자동 크기 조절을 완벽하게 지원합니다. 기능을 사용하지 않습니다. android.support.v4.widget 패키지에는 TextViewCompat가 포함되어 있습니다. 클래스를 사용하여 이전 버전과 호환되는 방식으로 특성에 액세스할 수 있습니다.

TextView 자동 크기 조절 설정

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

TextView 자동 크기 조절을 설정하는 방법에는 세 가지가 있습니다. 다음 섹션에 설명되어 있습니다.

참고: XML 파일에 자동 크기 조절을 설정하면 'wrap_content' 값을 사용하여 추천됨 대상 다음의 layout_width 또는 layout_height 속성 TextView입니다. 이렇게 하면 예기치 않은 결과를 얻을 수 있습니다.

기본

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

  • 기본 설정을 프로그래매틱 방식으로 정의하려면 <ph type="x-smartling-placeholder"></ph> setAutoSizeTextTypeWithDefaults(int autoSizeTextType) 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다. 사용 중지하려면 AUTO_SIZE_TEXT_TYPE_NONE를 입력하세요. 자동 크기 조절 기능 또는 AUTO_SIZE_TEXT_TYPE_UNIFORM를 가로축과 세로축의 크기를 균일하게 조정합니다.
  • 참고: 균일한 크기 조정의 기본 크기는 minTextSize = 12sp, maxTextSize = 112spgranularity = 1px.입니다.

  • XML에서 기본 설정을 정의하려면 android 네임스페이스를 사용합니다. 그런 다음 autoSizeTextType 속성을 없음으로 설정하거나 uniform).
  • <?xml version="1.0" encoding="utf-8"?>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:autoSizeTextType="uniform" />
    

지원 라이브러리를 사용하여 기본 설정 정의

  • 지원 라이브러리를 통해 프로그래매틱 방식으로 기본 설정을 정의하려면 다음 단계를 따르세요. 호출 <ph type="x-smartling-placeholder"></ph> 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는 최소 및 최대 크기 속성 사이의 범위에서 균일하게 조정됩니다. 각 증분은 세분성 속성에 설정된 크기입니다.

  • 프로그래매틱 방식으로 텍스트 크기 범위 및 치수를 정의하려면 setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit) 메서드를 호출하세요. 최댓값, 최솟값, 세부사항을 입력하세요. 값 및 모든 TypedValue 크기 단위입니다.
  • XML에서 텍스트 크기 범위와 치수를 정의하려면 android를 사용하세요. 네임스페이스를 다음 속성을 사용합니다. <ph type="x-smartling-placeholder">
      </ph>
    • 다음과 같이 설정합니다. autoSizeTextType 속성을 none 또는 uniform으로 설정합니다. none 값 기본값이며 uniform으로 설정하면 TextView 배율이 가로 및 세로에서 균일하게 표시됩니다.
    • autoSizeMinTextSize를 설정합니다. autoSizeMaxTextSize, 및 autoSizeStepGranularity 속성을 사용하여 자동 크기 조절을 위한 TextView입니다.
  • <?xml version="1.0" encoding="utf-8"?>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:autoSizeTextType="uniform"
        android:autoSizeMinTextSize="12sp"
        android:autoSizeMaxTextSize="100sp"
        android:autoSizeStepGranularity="2sp" />
    

지원 라이브러리를 사용하여 세부사항 정의

  • 지원 라이브러리에 추가하려면 <ph type="x-smartling-placeholder"></ph> TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit) 메서드를 사용하여 축소하도록 요청합니다. 최댓값, 최솟값, 세부사항 값 및 모든 TypedValue 크기 단위를 포함할 수 있습니다.
  • 지원을 통해 XML에서 텍스트 크기 범위 및 치수를 정의 app 네임스페이스를 사용하고 autoSizeText, autoSizeMinTextSize autoSizeMaxTextSize 및 레이아웃 XML 파일의 autoSizeStepGranularity 속성
  • <?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 네임스페이스를 사용하고 다음 속성을 설정하세요.
    • autoSizeTextType 설정 속성을 none 또는 uniform으로 설정합니다. 없음 기본값이며 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 프로그래매틱 지원 라이브러리를 통해 <ph type="x-smartling-placeholder"></ph> TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit) 메서드를 사용하여 축소하도록 요청합니다. TextView 클래스의 인스턴스, 크기 배열 및 모든 TypedValue 치수 단위 지정할 수 있습니다.
  • 미리 설정된 크기를 사용하여 TextView을 XML로 변환하려면 app 네임스페이스를 설정하고 autoSizeTextType 및 레이아웃 XML 파일의 autoSizePresetSizes 속성.
  • <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 자동 크기 조절에 관한 추가 정보 콘텐츠, 시청 Android Jetpack: TextView 자동 크기 조절