【发布时间】:2018-11-14 22:10:18
【问题描述】:
有一个宽度固定的EditText,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 时,我将搜索一个新的textSize(在while 循环中)。
但是当我一个一个地输入单词时,出现了一个奇怪的错误。
如您所见,现在文本已成为上限。
现在我输入另一个字符
K.
我也不知道为什么新的字符会单独出现。
【问题讨论】:
-
我只是好奇
val paint =你在用一些js吗? -
将
edit_text.setTextSize(COMPLEX_UNIT_PX, textSize)移到 while 循环中 -
我认为你不需要 while 循环在那里,因为 afterTextChange 应该是文本更改后触发的事件
-
我只是不确定你使用的是 JS >.
-
大声笑,我使用的是 Kotlin insetead of js。