android 字自动缩小,Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView

Android Oreo 8.0 新特性实战 Autosizing TextView --自动缩放TextView

8.0出来很久了,这个新特性已经用了很久了,但是一直没有亲自去试试。这几天新的需求来了,需要显示用户的金币,默认是大字体展示,但是又要求用户的金币过多(例如: 9999999 金币)时不能超出布局范围,所以需要在用户金币过多时为了将金币显示出来,需要减小字体大小。这样的需求真的和这个新特性很吻合,于是借此机会写了个简单的demo,现在分享出来,当然你也可以查看官方文档:

https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview.html

1. 先看看效果图

bVYX8c?w=800&h=1422

2. 使用条件

新特性支持 android8.0

当然,你也可以使用Support library,但是必须是26.0.0及其以上,我这里使用的是目前最新的 26.1.0

implementation 'com.android.support:appcompat-v7:26.1.0'

3. 三个API使用说明

private void initScaleConfig() {

//TODO config scale params for normal textView

/**

* android:autoSizeTextType="uniform"

* the type of auto-size. Must be one of

* {@link TextViewCompat#AUTO_SIZE_TEXT_TYPE_NONE} or

* {@link TextViewCompat#AUTO_SIZE_TEXT_TYPE_UNIFORM}

* none: 关闭缩放功能

* uniform: 垂直方向与水平方向缩放

*/

TextViewCompat.setAutoSizeTextTypeWithDefaults(tv_scale, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);

/**

* 参数一: 被设置的TextView

* 参数二: 自动缩放的最小字号

* 参数三: 自动缩放的最大字号

* 参数四: 参数二与参数三所用的单位,这里因为字体大小,所以我指定为SP

*/

TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(tv_scale,

12, 48, 2, TypedValue.COMPLEX_UNIT_SP);

/**

* 参数一:

* 参数二: 设置多个预制字体大小,这样在缩放时字体会根据预制的字体大小而缩放

* 参数三: 参数二里面的Int值对应的单位,这里因为字体大小,所以我指定为SP

*/

int[] autoTextSize = getResources().getIntArray(R.array.autosize_text_sizes);

TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(tv_scale, autoTextSize, TypedValue.COMPLEX_UNIT_SP);

}

具体参数说明我写在了注释上了,应该很详细了。

结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值