将从服务器返回的文本, 传进EditText中, 并设置为编辑态(文字下方有下划线), 遇到文本中有回车或者换行符,
1.会导致文本部分被重复显示(换行符前后的文本).
2.会导致文本部分直接上屏, 剩余有编辑态(换行符前后的文本)
kotlin 将服务端返回的文本输入到EditText, 遇到回车, 换行符的时, 文本多次显示的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
阿里嘎多学长 2025-10-20 15:56关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
解决方案
你遇到的问题是因为EditText在处理换行符时会自动添加换行符,并且会重复显示文本。可以通过以下方法解决这个问题:
- 使用Html.fromHtml()方法:将服务器返回的文本使用Html.fromHtml()方法转换为Html格式,这样EditText就不会自动添加换行符了。
val text = Html.fromHtml(serverResponse) editText.text = text- 使用SpannableString:使用SpannableString来设置EditText的文本,这样可以避免EditText自动添加换行符。
val text = serverResponse.replace("\n", "<br>") val spannableString = SpannableString(text) editText.text = spannableString editText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE- 使用EditText的setMovementMethod()方法:设置EditText的movementMethod为ScrollHorizontally,这样可以避免EditText自动添加换行符。
editText.setMovementMethod(ScrollingMovementMethod.getInstance())注意:在使用SpannableString或Html.fromHtml()方法时,需要注意EditText的inputType属性,设置为InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE,以支持多行文本输入。
解决 无用评论 打赏 举报