Android 8.0 新特性(四) - 自动调整TextView


Autosizing TextViews
Demo地址:AutosizingTextViewDemo

在Android O中,TextView可用自动放大或缩小文本的大小,以便根据TextView的属性和边界填充其布局。这样设置可以更轻松地在不同屏幕上优化动态内容的文本大小。

Support 26支持在运行Android 8.0(API 26)之前版本的设备上自动调整TextView功能,最低API要求是 API 14。在android.support.v4.widget中的TextViewCompat类,以兼容此特性。

设置TextView自动调整大小

可以使用框架或支持库以编程方式或以XML格式设置TextView的自动调整大小。要设置XML属性,还可以使用Android Studio中的“Attribute”窗口。

有三种方式可以设置TextView的自动调整大小:

  1. 默认(Default)
  2. 间隔尺寸(Granularity)
  3. 预设尺寸(Preset Sizes)

注意:如果在XML文件中设置自动调整,则不建议对TextView的layout_width或layout_height属性使用值“wrap_content”。

默认(Default)

默认设置使TextView的自动调整尺寸在水平轴和垂直轴上均匀。

  • 要以编程方式定义默认设置,调用setAutoSizeTextTypeWithDefaults(int autoSizeTextType)方法。

    • AUTO_SIZE_TEXT_TYPE_NONE:关闭自动调整功能
    • AUTO_SIZE_TEXT_TYPE_UNIFORM:以均衡缩放水平轴和垂直轴

    统一缩放的默认维度为minTextSize = 12sp,maxTextSize = 112sp,间隔尺寸= 1px

  • 要在XML中定义默认设置,使用android命名空间,将autoSizeTextType属性设置为none或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





  


间隔尺寸(Granularity)

可以定义最小和最大文本尺寸的范围以及指定每个步长的尺寸。TextView在最小和最大文本尺寸之间的范围内均匀地缩放。每个增量按照autoSizeStepGranularity属性中设置的步长进行缩放。

  • 要以编程方式定义文本大小和尺寸范围,调用setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize,int autoSizeMaxTextSize,int autoSizeStepGranularity,int unit)方法。

    • autoSizeMinTextSize:最小值
    • autoSizeMaxTextSize:最大值
    • autoSizeStepGranularity:步长
    • unit:任何TypedValue尺寸单位
  • 要在XML中定义一系列文本大小和尺寸,使用android命名空间并设置以下属性:

    • android:autoSizeTextType:none或uniform
    • android:autoSizeMinTextSize
    • android:autoSizeMaxTextSize
    • android:autoSizeStepGranularity




使用支持库

  • 要以编程方式定义文本大小和尺寸范围,调用TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit) ,提供以下参数:

    • autoSizeMinTextSize:最小值
    • autoSizeMaxTextSize:最大值
    • autoSizeStepGranularity:步长
    • unit:任何TypedValue尺寸单位
  • 要在XML中定义一系列文本大小和尺寸,使用app命名空间并设置以下属性:

    • app:autoSizeTextType:none或uniform
    • app:autoSizeMinTextSize
    • app:autoSizeMaxTextSize
    • app:autoSizeStepGranularity





  


预设尺寸(Preset Sizes)

预设尺寸可以让在自动自动调整文本时TextView选择的所有指定的值。

  • 以编程方式设置TextView的自动调整,调用setAutoSizeTextTypeUniformWithPresetSizes(int [] presetSizes,int unit)方法。

    • presetSizes:指定的文本尺寸列表
    • unit:任何TypedValue尺寸单位
  • 在设置XML中设置TextView自动调整大小,使用android命名空间并设置以下属性。在res/values/ arrays.xml文件中定义尺寸数组,将尺寸数组作为资源访问:

    • android:autoSizeTextType:none或uniform
    • android:autoSizePresetSizes



  
    10sp
    12sp
    20sp
    40sp
    100sp
  




使用支持库

  • 以编程方式设置TextView的自动调整,TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit),提供以下参数

    • textView
    • presetSizes::指定的文本尺寸列表
    • unit:任何TypedValue尺寸单位
  • 在设置XML中设置TextView自动调整大小,使用app命名空间并设置以下属性。在res/values/ arrays.xml文件中定义尺寸数组,将尺寸数组作为资源访问:

    • app:autoSizeTextType:none或uniform
    • app:autoSizePresetSizes



  
    10sp
    12sp
    20sp
    40sp
    100sp
  





  

你可能感兴趣的:(Andriod进阶)