设置app:autoSizeTextType="uniform"后TextView底部文字被裁剪如何解决
问题原因
你编写的XML语法不存在错误,文本裁剪是Android自动文本大小调整功能的特性限制导致的,核心冲突点如下:
- 当设置
app:autoSizeTextType="uniform"开启均匀自动缩放时,系统需要先获取TextView的确定边界,才能计算出适配边界的文本大小。但你当前给高度设置的是android:layout_height="wrap_content",控件高度本身依赖于文本大小来计算,二者形成逻辑死循环,最终自动缩放的计算逻辑异常,就会出现文本截断。 - 你设置的
android:padding="10dp"会被系统从控件可用绘制区域中扣除,而wrap_content场景下自动缩放逻辑不会主动撑开控件高度,当计算出的文本大小对应的行高超出可用绘制区域时,就会触发裁剪。
解决方案
可根据业务需求选择以下任意一种方案,保留自动缩放功能的同时解决裁剪问题:
- 给TextView设置固定高度,例如
android:layout_height="60dp",给系统提供确定的计算边界,即可正常计算适配的文本大小。 - 若必须使用wrap_content作为高度属性,可以额外添加
android:minLines="1"(多行场景可调整为对应行数),同时适当调大app:autoSizeMinTextSize的下限值,避免计算出的文本行高超出控件承载范围。 - 若使用AndroidX兼容库实现自动缩放,可升级
androidx.appcompat:appcompat依赖到最新稳定版,旧版本兼容库存在部分自动缩放计算的边界bug。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

