AutoTextView最大大小问题

时间:2018-05-24 03:12:13

标签: android android-layout textview

我在我的应用程序中遇到此崩溃引起:

  

java.lang.IllegalArgumentException:最大自动大小文本大小(24.674995px)小于或等于最小自动大小文本大小(31.5px)

使用自动TextView。如何在出现这种情况时优雅地处理这种情况。

3 个答案:

答案 0 :(得分:3)

我今天也遇到了同样的问题。一般来说,每当我遇到问题时,我都无法解释这是三星设备。就像您所说的一样。基本上,三星手机上的默认主题设置了最小尺寸。对于我们来说,解决方案是专门添加autoSizeMinTextSize="12dp"

答案 1 :(得分:0)

您应该将autoSizeMaxTextSize的{​​{1}}的属性值设置为大于TextView

不正确的

autoSizeMinTextSize

正确

    <android.support.v7.widget.AppCompatTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:autoSizeMaxTextSize="24.674995px"
    android:autoSizeMinTextSize="31.5px"/>

答案 2 :(得分:0)

这是另一种解决方案,具体取决于您的需求以及失败的原因。问题在于,用户已在其设备的显示设置中更改了默认的字体缩放大小(特别是,他们增加了缩放比例以使文本变大)。因此,文本的大小大于您指定的最大值,因为默认的最小值(因为您未指定最小值,并且默认的IS由用户首选项缩放)大于您的最大值。

仅当您要忽略用户的缩放首选项时,才指定最小值。在某些情况下是必需的(在我的项目中,在特定情况下,我们根本无法兑现用户所需的文本大小,因为该文本绑定到具有固定大小的可视元素)。

“适当的”解决方案将遵循用户的缩放首选项,因此它使用sp个单位(与dp一样密度独立,但根据用户喜好进行缩放),而不是{{1 }} 单位。如果这样做,您仍然只能指定最大字体大小,因为该最大字体大小将与未指定的默认最小值一起缩放。

因此,总而言之,除非因版式要求而特别想忽略用户缩放比例,否则应始终使用dp单位来指定与文本相关的大小。

此外,这很容易测试。只需进入“设置”->“字体和屏幕缩放”->“字体大小”,然后将其设置为“巨大”即可。无论如何,您应该已经针对这些类型的变量测试了布局。