AutoSizing TextView的使用

AutoSize屬性的做用是讓文本內容儘可能填充TextView。AutoSize是動態屬性,也就是說,它能隨着控件容器大小的變化,或者文本內容的變化,動態改變文本的顯示方案,使得文本內容儘可能填充TextViewandroid

 

如何使用AutoSize?

在佈局文件中,直接設置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_widthlayout_height屬性不能設置爲wrap_content。官方的解釋是,這樣可能會致使出乎預料的結果。解決方案是,將TextView設置爲match_parent或者一個固定的大小。字體

<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:autoSizeTextType="uniform"/>

AutoSize的其它屬性

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