在 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"
适合我。但是不知道为什么。
有一个固定宽度的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"
适合我。但是不知道为什么。