<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>
使用以上的解决方法,自适应的效果就可以完美展示了。