You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:35:14