Skip to content

Instantly share code, notes, and snippets.

@Zimins
Last active October 16, 2018 00:33
Show Gist options
  • Save Zimins/56c3efa1bbbfae963faf4a7277ac481c to your computer and use it in GitHub Desktop.
Save Zimins/56c3efa1bbbfae963faf4a7277ac481c to your computer and use it in GitHub Desktop.
TextView extension : break string by letter
fun TextView.breakLetter() {
    // original Text
    var processingString = text.toString()
    var availableLetterCount = 0

    val stringBuilder = StringBuilder()

    while (availableLetterCount < processingString.length) {
        availableLetterCount =
                paint.breakText(processingString, true, maxWidth.toFloat(), null)

        val processedString = processingString.substring(0, availableLetterCount) + "\n"

        stringBuilder.append(processedString)

        processingString = processingString.substring(availableLetterCount)
        while (processingString.first() == ' ') {
            processingString = processingString.removeRange(0, 1)
        }
    }

    stringBuilder.append(processingString)

    text = stringBuilder.toString()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment