Android 更改后文本更改中的文本大小

Android 更改后文本更改中的文本大小,android,textview,Android,Textview,有一个宽度固定且maxLines=1的编辑文本。我想在文本长度增加时更改文本大小 override fun afterTextChanged(s: Editable?) { val paint = edit_text.paint var textSize = edit_text.textSize var newWidth = paint.measureText(s.toString()) while (newWidth >= edit_text.width)

有一个宽度固定且
maxLines=1
的编辑文本。我想在文本长度增加时更改文本大小

override fun afterTextChanged(s: Editable?) {
    val paint = edit_text.paint
    var textSize = edit_text.textSize
    var newWidth = paint.measureText(s.toString())
    while (newWidth >= edit_text.width) {
        textSize -= 1
        paint.textSize = textSize
        newWidth = paint.measureText(s.toString())
    }
    edit_text.setTextSize(COMPLEX_UNIT_PX, textSize)
}
如您所见,当
newWidth
大于
width
时,我将搜索一个新的文本大小(在while循环中)

然而,当我一个接一个地输入单词时,出现了一个奇怪的错误

如您所见,现在文本已成为上限

现在我输入另一个字符
K


我也不明白为什么新字符会单独出现

android:inputType=“text”适合我。但是我不知道为什么。

我只是好奇
val paint=
你在使用一些js吗?移动这个
编辑文本。setExtSize(复杂单位,textSize)
在while循环中,我想你不需要while循环,因为后文本更改应该是文本更改后触发的事件,我只是不确定你在使用js>。哈哈,我使用的是js的Kotlin instead。