Android Studio中Java代码修改TextView自动文本大小(最大/最小值)崩溃问题
解决Android中TextView自动文本大小设置崩溃的问题
你的崩溃根源很明确——setAutoSizeTextTypeUniformWithConfiguration方法的参数传错了!尤其是单位和步长参数,不能随便填0或1,这会直接触发系统抛出IllegalArgumentException导致应用崩溃。
先搞懂方法的正确参数要求
这个方法的完整签名是:
public void setAutoSizeTextTypeUniformWithConfiguration( int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit )
每个参数的规则:
autoSizeMinTextSize:最小字体大小(对应你的需求5)autoSizeMaxTextSize:最大字体大小(初始25,后续改20)autoSizeStepGranularity:字体调整的步长,必须大于0(你之前传0是绝对错误的)unit:字体大小的单位,必须用TypedValue提供的合法常量,比如TypedValue.COMPLEX_UNIT_SP(最常用的适配性单位)、TypedValue.COMPLEX_UNIT_DP等
正确的实现代码
初始化TextView并设置初始自动文本大小
TextView versesText = findViewById(R.id.VersesArabicTashkeel); // 初始配置:最小5sp,最大25sp,步长1sp versesText.setAutoSizeTextTypeUniformWithConfiguration( 5, 25, 1, TypedValue.COMPLEX_UNIT_SP );
后续修改最大值为20、保持最小值5
直接再次调用方法即可,注意参数不要出错:
// 修改最大值为20sp,其他参数保持不变 versesText.setAutoSizeTextTypeUniformWithConfiguration( 5, 20, 1, TypedValue.COMPLEX_UNIT_SP );
额外兼容提示
如果你的App需要兼容Android 8.0(API 26)以下的版本,要改用TextViewCompat的兼容方法:
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration( versesText, 5, 25, 1, TypedValue.COMPLEX_UNIT_SP );
内容的提问来源于stack exchange,提问作者Samuel
相关产品推荐
相关产品推荐

