AutoSize属性的做用是让文本内容尽可能填充TextView。AutoSize是动态属性,也就是说,它能随着控件容器大小的变化,或者文本内容的变化,动态改变文本的显示方案,使得文本内容尽可能填充TextView。android
在布局文件中,直接设置autoSizeTextType属性为uniform便可。这样,文本内容便会忽略android:textSize属性,从水平和垂直两个方向上缩放文本的内容。app
<TextView android:layout_width="200dp" android:layout_height="200dp" app:autoSizeTextType="uniform"/>
若是不想使用AutoSize属性,将其设置为none便可。ide
<TextView android:layout_width="200dp" android:layout_height="200dp" app:autoSizeTextType="none"/>
注意:在布局文件中使用AutoSize属性以前,需确保引入命名空间app 。布局
xmlns:app="http://schemas.android.com/apk/res-auto"
另外,还须要注意的是,在使用AutoSize属性时,TextView的layout_width和layout_height属性不能设置为wrap_content。官方的解释是,这样可能会致使出乎预料的结果。解决方案是,将TextView设置为match_parent或者一个固定的大小。字体
<TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform"/>
单纯地使用AutoSize属性,系统会根据当前的状况,自动为你缩放文本内容,但也许你但愿对文本字体大小进行限制或自定义。为此AutoSize还提供了其它几个属性。orm
app:autoSizeMaxTextSize 设置缩放过程当中,字体的最大值。xml
app:autoSizeMinTextSize 设置缩放过程当中,字体的最小值。it
app:autoSizeStepGranularity 设置缩放变化的粒度。即字体发生变化时,字体大小增减的粒度。form
<TextView android:id="@+id/tvText" android:layout_width="200dp" android:layout_height="200dp" app:autoSizeMaxTextSize="100sp" app:autoSizeMinTextSize="20sp" app:autoSizeStepGranularity="2sp" app:autoSizeTextType="uniform" />
如上所示:字体最大不会超过100sp,最小不会低于20sp,每次字体发生变化的最小的粒度为2sp。class
注意:字体最大不能超过112sp,最小不能低于12sp,粒度最小为1px。
AutoSize属性和android:singleLine属性是冲突的,其实也很好理解,由于AutoSize须要根据状况适时改变文本,截断文本,因此和singleLine的特性相冲突,这个在使用过程当中须要注意。