Android控件属性(5) - autoSizeMinTextSize、autoSizeMaxTextSize、autoSizeTextType等属性

主要适用于TextView,让文本尽可能占满控件(文本太长时自动减小字体尺寸,而文本短时则自动增大字体尺寸),是Android 8.0开始提供的功能。

例如下面的TexyView:

<TextView
    android:layout_width="105dp"
    android:layout_height="70dp"
    android:text="a b c"
    android:textSize="12sp" />

 

在设计器里的显示效果为:

如果想让"a b c"自动扩大尺寸以充分填满TextView,则将autoSizeTextType设置为"uniform"(autoSizeTextType只有"uniform"和"none"两种可取值),并且将最大允许尺寸(属性autoSizeMaxTextSize)设置为60sp:

    <TextView
        android:layout_width="105dp"
        android:layout_height="70dp"
        android:text="a b c"
        android:textSize="12sp"
        android:autoSizeMaxTextSize="60sp"
        android:autoSizeTextType="uniform" />

显示效果则为:

相反的,当文本很长,但又想自动缩小字体尺寸,以在TextView内单行全部显示时,则可以设置autoSizeTextType和autoSizeMinTextSize属性,如下面的TextView:

    <TextView
        android:layout_width="105dp"
        android:layout_height="70dp"
        android:maxLines="1"
        android:text="a b c e f g h I j k l m n o p q r"
        android:textSize="12sp"/>

显示效果为:

设置autoSizeTextType和autoSizeMinTextSize属性:

    <TextView
        android:layout_width="105dp"
        android:layout_height="70dp"
        android:maxLines="1"
        android:text="a b c e f g h I j k l m n o p q r"
        android:textSize="12sp"
        android:autoSizeMinTextSize="8sp"
        android:autoSizeTextType="uniform" />

显示效果则为:

如果要在早于Android 8.0的平台上运行,则应使用控件android.support.v7.widget.AppCompatTextView,而非TextView,且autoSizeTextType等属性的前缀应改为app。

autoSizeStepGranularity属性取值为字体尺寸,如"1sp"、"2sp"等,指定Android在搜索最佳字体尺寸时的迭代步长。

autotoSizePresetSizes则指定了所有尺寸的候选值,是数组类型,需要先在values/arrays.xml里定义一个数组,如下例:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="sizes">
        <item>12sp</item>
        <item>16sp</item>
    </array>
</resources>

然后autoSizePresetSizes属性引用这个数组:

<TextView
    ......
    android:autoSizePresetSizes="@array/sizes" />

autotoSizePresetSizes的优先级高于autoSizeStepGranularity(即同时设置了autotoSizePresetSizes和autoSizeStepGranularity,则autoSizeStepGranularity的值将被忽略)。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值