我在我的应用程序中遇到此崩溃引起:
java.lang.IllegalArgumentException:最大自动大小文本大小(24.674995px)小于或等于最小自动大小文本大小(31.5px)
使用自动TextView
。如何在出现这种情况时优雅地处理这种情况。
答案 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
单位来指定与文本相关的大小。
此外,这很容易测试。只需进入“设置”->“字体和屏幕缩放”->“字体大小”,然后将其设置为“巨大”即可。无论如何,您应该已经针对这些类型的变量测试了布局。