系统SDK版本大于等于26,直接使用TextView就可以。

系统SDK版本小于26,需要使用support包,support包的版本要大于等于26.0。support包支持Android 4.0 (API level 14)及以上版本。

2.1 如果Activity继承自AppCompatActivity,直接使用TextView就可以。

2.2 否则需要使用AppCompatTextView。

设置TextView自动调整字体大小

有三种方式可以设置TextView支持自动调整字体大小。

默认设置

控制调整范围

预设大小

注意:如果在XML文件中设置自动调整字体大小,不建议将TextView的宽高设置为wrap_content,不然可能会有意想不到的问题。

默认设置

默认设置允许TextView在水平和垂直轴上均匀调整字体大小。

在代码中使用

根据SDK版本调用不同的方法

//SDK版本大于等于26

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

tvDynamicSet.setAutoSizeTextTypeWithDefaults(TextView.AUTO_SIZE_TEXT_TYPE_UNIFORM)

} else {

TextViewCompat.setAutoSizeTextTypeWithDefaults(tvDynamicSet,

TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM

)

}

注意:默认情况下缩放的最小字体是12sp,最大的字体是112sp,每次增加或减少的粒度是1px。

在xml文件中使用

如果系统SDK版本大于等于26,使用android命名空间并设置autoSizeTextType属性。该属性取值也有两个none和uniform,对应代码中的两个值。

android:layout_width="match_parent"

android:layout_height="200dp"

android:autoSizeTextType="uniform" />

如果系统SDK版本小于26,因为我们的Activity是继承自AppCompatActivity的,所以我们可以直接使用TextView,但是注意要使用app命名空间。

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">

android:layout_width="match_parent"

android:layout_height="200dp"

app:autoSizeTextType="uniform" />

控制调整范围

你可以定义字体大小调整的一个范围并指定一个渐变值表示每次增加或减少的值。

在代码中使用

//sdk版本大于等于26

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

tvDynamicSet.setAutoSizeTextTypeUniformWithConfiguration(16, 40, 1, TypedValue.COMPLEX_UNIT_SP

)

} else {

TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(

tvDynamicSet, 16, 40, 1, TypedValue.COMPLEX_UNIT_SP

)

}

以TextView的setAutoSizeTextTypeUniformWithConfiguration方法为例,3个参数的含义如下:

/**

*

* @param autoSizeMinTextSize 最小字体

* @param autoSizeMaxTextSize 最大字体

* @param autoSizeStepGranularity 渐变值

* @param unit the 尺寸单位 px,sp,dp

*/

在xml中使用

如果系统SDK版本大于等于26,使用android命名空间并设置autoSizeTextType属性为uniform。然后设置autoSizeMinTextSize,autoSizeMaxTextSize和autoSizeStepGranularity这个三个属性。

android:layout_width="match_parent"

android:layout_height="200dp"

android:autoSizeTextType="uniform"

android:autoSizeMinTextSize="12sp"

android:autoSizeMaxTextSize="100sp"

android:autoSizeStepGranularity="2sp" />

如果系统SDK版本小于26,使用app命名空间并设置autoSizeTextType属性为uniform。然后设置autoSizeMinTextSize,autoSizeMaxTextSize和autoSizeStepGranularity这个三个属性。

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">

android:layout_width="match_parent"

android:layout_height="200dp"

app:autoSizeTextType="uniform"

app:autoSizeMinTextSize="12sp"

app:autoSizeMaxTextSize="100sp"

app:autoSizeStepGranularity="2sp" />

预设大小

你可以指定TextView在自动调整字体大小的时候所有可取的值。

在代码中使用

//获取预设的字体大小数字

val intArray = resources.getIntArray(R.array.autosize_text_sizes)

//sdk版本大于等于26

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

tvDynamicSet.setAutoSizeTextTypeUniformWithPresetSizes(intArray, TypedValue.COMPLEX_UNIT_SP

)

} else {

TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(

tvDynamicSet, intArray, TypedValue.COMPLEX_UNIT_SP

)

}

在xml中使用

如果系统SDK版本大于等于26,使用android命名空间。设置autoSizeTextType属性和autoSizePresetSizes属性。

android:layout_width="match_parent"

android:layout_height="200dp"

android:autoSizeTextType="uniform"

android:autoSizePresetSizes="@array/autosize_text_sizes" />

在res/values/arrays.xml文件中定义需要的数组。

10sp

12sp

20sp

40sp

100sp

如果系统SDK版本小于26,使用app命名空间并设置autoSizeTextType属性和autoSizePresetSizes属性。

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">

android:layout_width="match_parent"

android:layout_height="200dp"

app:autoSizeTextType="uniform"

app:autoSizePresetSizes="@array/autosize_text_sizes" />

PS:监听用户是否调整了字体大小

可以在Application的重写onConfigurationChanged方法,然后看fontScale是否改变。标准值是1f。大于1f表示用户调大了字体。

@Override

public void onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

Logger.d(TAG, "fontScale = " + newConfig.fontScale);

}

参考链接:

android auto 字体大小,TextView自动调整字体大小相关推荐

  1. Android TextView自动调整字体大小(官方)

    官方在 Android 8.0(API26)给TextView,新增字体大小随着控件的大小变化的特性. 如果使用 appcompat 兼容库,可以向下支持到Android 4.0(AP14). 1.自 ...

  2. android 设置默认字体大小,Android中如何设置TextView的字体默认大小

    Android中如何设置TextView的字体默认大小 发布时间:2020-11-25 16:46:14 来源:亿速云 阅读:81 作者:Leah 本篇文章为大家展示了Android中如何设置Text ...

  3. android studio app字体大小设置,Android Studio App设置TextView文字内容大小颜色

    设置TextView文字内容大小颜色 1.第一种方法在activity_main.xml李设置,Java文件不用改: android:text="这里是文字" android:te ...

  4. android auto 字体大小,Android中给TextView字体大小用dp还是sp?dp和sp有什么区别?

    dp,sp都会根据屏幕ppi显示大小不同. ppi的运算方式是: PPI = (开根号(长度像素数² + 宽度像素数²)) / 屏幕对角线英寸数 dp:Density-independent pixe ...

  5. Android动态更改TextView的字体大小

    需求: 需要动态更改TextView内容字体的大小,比如设定TextView只有一行,宽度只有200dp,内容超过这个之后就缩小字体显示,只能能将字体都显示完全:也就是动态更改TextView的字体大 ...

  6. android设置应用字体大小,在Android应用程序改变的TextView的字体大小从原始设置更改字体大小(Font size...

    我想在我的应用程序指定我自己的文字大小,但我有这样一个问题. 当我在设备设置中更改字体大小,我的应用程序的字体大小TextView也会改变. Answer 1: 其实,设置字体大小只影响大小sp . ...

  7. Android中设置字体居中,【Android】TextView中不同大小字体如何上下垂直居中?

    前言 在客户端开发中,我们往往需要对一个TextView的文字的部分内容进行特殊化处理,比如加粗.改变颜色.加链接.下划线等.iOS为我们提供了AttributedString,而Android则提供 ...

  8. android 设置Spinner文字标题颜色 字体大小样式

    原文地址为: android 设置Spinner文字标题颜色 字体大小样式 // 在初始化之前改变 Spinner文字标题颜色         mySpinner.xml 样式文件放在main.xml ...

  9. 给Android Studio设置代码字体大小与界面字体样式

    前言 使用android studio第一步肯定就是设置字体大小了,废话不多说,直接上教程: 初始界面: 更改后界面: 目录 更改代码字体大小 更改界面字体大小及样式 一.更改代码字体大小​ File ...

最新文章

  1. python要配置几个环境变量_Python环境变量配置
  2. html判断是安卓还是苹果手机,网页能够自己判断是pc端首页还是手机android和苹果。...
  3. 智能型炉温测试仪kic x5软件,X5系列_KIC-7通道/9通道/12通道炉温测试仪
  4. vscode中控制台不能输入_vscode调试时如何在控制台输入
  5. ES6学习(四)—字符串的新增方法
  6. 觉醒:游戏迷学了计算机
  7. 怎么用class引入svg_让动效更酷炫!4 个常见且常用的 SVG 交互动画方法
  8. 凸包旋转卡壳(andrew)
  9. 微信小程序:父子组件的通信
  10. ncbi查找目的基因序列_如何获得基因序列——在NCBI中查找目的基因实例.PDF
  11. 只有mdf文件和ldf文件--怎么恢复数据库
  12. 优秀的计算机简历,计算机优秀简历范文
  13. Python基础 第五章
  14. python中使用什么命令安装组件_在离线环境下安装python组件
  15. python中单位转换_Python字节单位转换实例
  16. Java可变长参数列表
  17. 关于halcon基于表面的3d识别定位
  18. 高承实:做链改项目,想不清楚一定不会成功
  19. Dijkstra 算法-《数据结构》严蔚敏
  20. 河北师范大学汇华学院计算机类,河北师范大学汇华学院

热门文章

  1. Python 中的图:Dijkstra 算法
  2. java 文件遍历排序_Java的二叉树排序以及遍历文件展示文本格式的文件树
  3. MySQL —— 函数
  4. 关于表格中的文字溢出处理
  5. 普通人想要创业成功的捷径是什么?
  6. 水星路由器Mercury-D121无线桥接Mercury-mw310R
  7. 哪个牌子无线蓝牙耳机性价比最高?平价好用的蓝牙耳机品牌
  8. 2019Cov地图可视化(urllib+pyecharts)
  9. macOS_Monterey_12.6_21G115可引导可虚拟机安装的纯净版苹果OS系统ISO镜像安装包免费下载
  10. 奶茶杯上贴的标签是如何制作出来的