当前位置:   article > 正文

设置TextView自动调整字体大小_setautosizetexttypewithdefaults

setautosizetexttypewithdefaults

Android 设置TextView自动调整字体大小

TextView字体大小随着控件的大小变化而变化,Android 8.0(API26)新增,但兼容库 com.android.support:appcompat-v7:26.0.0版本以上已完全兼容到 API14

先上图:
在这里插入图片描述
有三种设置方式:

默认
粒度
预设大小
1.默认
允许TextView在水平轴和垂直轴上均匀地自动调整刻度。

1.1.原生设置
xml设置

<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:autoSizeTextType="uniform" />
  • 1
  • 2
  • 3
  • 4

代码设置

// 参数: int autoSizeTextType
textView.setAutoSizeTextTypeWithDefaults(TextView.AUTO_SIZE_TEXT_TYPE_UNIFORM);
  • 1
  • 2

1.2.兼容库设置
xml设置

<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:autoSizeTextType="uniform" />
  • 1
  • 2
  • 3
  • 4

代码设置

// 参数: TextView textView, int autoSizeTextType
TextViewCompat.setAutoSizeTextTypeWithDefaults(textView, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
  • 1
  • 2

参数介绍:
autoSizeTextType:none: 关闭自动调整功能;uniform: 均匀缩放水平轴和垂直轴

2.粒度
允许TextView在MinTextSize-MaxTextSize之间按StepGranularity的值为增量或减量来跳动。

2.1.原生设置
xml设置

<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"        
    android:autoSizeMaxTextSize="50sp"
    android:autoSizeMinTextSize="30sp"
    android:autoSizeStepGranularity="2sp"
    android:autoSizeTextType="uniform"/>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

代码设置

// 参数:int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit
textView.setAutoSizeTextTypeUniformWithConfiguration(30, 50, 2, TypedValue.COMPLEX_UNIT_SP);
  • 1
  • 2

2.2.兼容库设置
xml设置

<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:autoSizeMaxTextSize="50sp"
    app:autoSizeMinTextSize="30sp"
    app:autoSizeStepGranularity="2sp"
    app:autoSizeTextType="uniform" />
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

代码设置

// 参数:TextView textView, int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(textView, 30, 50, 2, TypedValue.COMPLEX_UNIT_SP);
  • 1
  • 2

参数介绍:
autoSizeMaxTextSize:最大值
autoSizeMinTextSize:最小值
autoSizeStepGranularity:粒度值,即每次增量或减量的值

总结:

1.粒度xml设置时必须设置autoSizeTextType=“uniform”,代码设置setAutoSizeTextTypeUniformWithConfiguration时则已设置
2.默认设置其实minTextSize = 12sp、maxTextSize = 112sp、granularity = 1px的粒度设置

3.预设大小
允许TextView设置自动调整字体大小跳动时所选的值 。

3.1.原生设置
xml设置

<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"        
    android:autoSizePresetSizes="@array/auto_size_text_sizes"
    android:autoSizeTextType="uniform"/>
  • 1
  • 2
  • 3
  • 4
  • 5
<array name="auto_size_text_sizes">
    <item>10sp</item>
    <item>12sp</item>
    <item>20sp</item>
    <item>40sp</item>
    <item>100sp</item>
</array>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

代码设置

int[] presetSizes = getResources().getIntArray(R.array.auto_size_text_sizes_code);
// 参数:int[] presetSizes, int unit
textView.setAutoSizeTextTypeUniformWithPresetSizes(presetSizes, TypedValue.COMPLEX_UNIT_SP);
  • 1
  • 2
  • 3
<array name="auto_size_text_sizes_code">
    <item>10</item>
    <item>12</item>
    <item>20</item>
    <item>40</item>
    <item>100</item>
</array>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.2.兼容库设置
xml设置

<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:autoSizePresetSizes="@array/auto_size_text_sizes"
    app:autoSizeTextType="uniform" />
  • 1
  • 2
  • 3
  • 4
  • 5

代码设置

int[] presetSizes = getResources().getIntArray(R.array.auto_size_text_sizes_code);
// 参数:TextView textView, int[] presetSizes, int unit
TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(textView, presetSizes, TypedValue.COMPLEX_UNIT_SP);
  • 1
  • 2
  • 3

参数介绍:
autoSizePresetSizes:预设大小的数组,建议放到res/values/arrays.xml文件里

总结:

1.预设大小xml设置时可以不设置autoSizeTextType=“uniform”,xml设置autoSizePresetSizes和代码设置setAutoSizeTextTypeUniformWithPresetSizes时都已判断如果autoSizePresetSizes数组的size>0则设置autoSizeTextType=“uniform”
2.默认设置其实minTextSize = 12sp、maxTextSize = 112sp、granularity = 1px的粒度设置

转载自: link.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/543900
推荐阅读
相关标签
  

闽ICP备14008679号