textview autosize屬性不生效問題解決

​
    <style name="HqTopValueText">
        <item name="android:ellipsize">end</item>
        <item name="android:text">--</item>
        <item name="android:singleLine">true</item>
        <item name="android:textColor">@color/hq_equal</item>
        <item name="android:textSize">@dimen/hq_top_value_textcolor</item>
        <item name="android:gravity">center_vertical</item>
​​

​

 

            <TextView
                android:id="@+id/tv_top_value3"
                style="@style/HqTopValueText"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:gravity="right|center_vertical"
                android:textSize="14dp"
                app:autoSizeMaxTextSize="14dp"
                app:autoSizeMinTextSize="6dp"
                app:autoSizeStepGranularity="1dp"
                app:autoSizeTextType="uniform"
                app:layout_columnWeight="1"
                app:layout_rowWeight="1" />

結果,在大數據情況下,字體字體大小仍舊不能自適應。

爲什麼在設置了以下四個屬性後,仍舊不能自適應呢。

                app:autoSizeMaxTextSize="14dp"
                app:autoSizeMinTextSize="6dp"
                app:autoSizeStepGranularity="1dp"
                app:autoSizeTextType="uniform"

 

多次嘗試,最後發現,是在style的屬性中,有以下代碼導致。

<item name="android:singleLine">true</item>

 

稍微思考一下,也能想通爲什麼設置了singleLine會導致無法生效:singleLine配合固定的layout width,可以讓字體在無法展示的情況下以省略號的形式。所以需要去掉這樣的屬性,保證一行展示的效果可以用maxLine =1 來代替使用。

    <style name="TopValueText">
        <item name="android:ellipsize">end</item>
        <item name="android:text">--</item>
        <item name="android:maxLines">1</item>
        <item name="android:textColor">@color/hq_equal</item>
        <item name="android:textSize">@dimen/hq_top_value_textcolor</item>
        <item name="android:gravity">center_vertical</item>
    </style>

使用以上的解決方法,自適應的效果就可以完美展示了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章