How to retrieve multi-line text from Edittext?

后端 未结 4 1188
有刺的猬
有刺的猬 2020-12-17 06:08

I want to get a text(Multi-line) from Edittext same as given Screenshot.

I want below output when getText() from Edittext.

Output:

4条回答
  •  我在风中等你
    2020-12-17 06:58

    For next comers, I find the accepted answer overcomplicated for the task. Here is a nice extension code in Kotlin that uses Paint.breakText(). That said, it can probably be simplified further...

    fun EditText.getMultilineText(): String {
        val maxWidth = (width - paddingLeft - paddingRight).toFloat()
        val original = text.toString().trim()
        val len = original.length
        val multiline = mutableListOf()
        var p = 0
    
        var count = -1
        while (count != 0) {
            count = paint.breakText(original, p, len, true, maxWidth, null)
            if (p + count < len) {
                var tmp = count
                while (tmp > 0 && original[p + tmp - 1] != ' ') {
                    tmp -= 1
                }
                if (tmp > 0) {
                    count = tmp
                }
            }
            val tmp = original.substring(p, p + count).trim()
            if (tmp.isNotBlank()) {
                multiline.add(tmp)
            }
            p += count
        }
    
        return multiline.joinToString("\r\n")
    }
    

提交回复
热议问题