在 afterTextChanged 中更改文本大小

Change textsize in afterTextChanged

有一个固定宽度的EditTextmaxLines = 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 时,我将搜索一个新的 textSize(在 while 循环中)。

但是当我一个字一个字输入的时候,出现了一个奇怪的bug

如你所见,现在文字已经变成上限了。

现在我输入另一个字符 K.

我也想不通为什么新字符会单独出现。

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