andWesley 2025-10-20 15:27 采纳率: 0%
浏览 2

kotlin 将服务端返回的文本输入到EditText, 遇到回车, 换行符的时, 文本多次显示的问题

将从服务器返回的文本, 传进EditText中, 并设置为编辑态(文字下方有下划线), 遇到文本中有回车或者换行符,
1.会导致文本部分被重复显示(换行符前后的文本).
2.会导致文本部分直接上屏, 剩余有编辑态(换行符前后的文本)

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-10-20 15:56
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    你遇到的问题是因为EditText在处理换行符时会自动添加换行符,并且会重复显示文本。可以通过以下方法解决这个问题:

    1. 使用Html.fromHtml()方法:将服务器返回的文本使用Html.fromHtml()方法转换为Html格式,这样EditText就不会自动添加换行符了。
    val text = Html.fromHtml(serverResponse)
    editText.text = text
    
    1. 使用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
    
    1. 使用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,以支持多行文本输入。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月20日