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的特性相沖突,這個在使用過程當中須要注意。