-
Notifications
You must be signed in to change notification settings - Fork 0
/
TrailingSpaceSpan.kt
32 lines (27 loc) · 1.03 KB
/
TrailingSpaceSpan.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package com.concisesoftware.text.span
import android.graphics.Canvas
import android.graphics.Paint
import android.text.SpannableStringBuilder
import android.text.style.ReplacementSpan
class TrailingSpaceSpan: ReplacementSpan() {
companion object {
const val SPACE = " "
}
override fun getSize(paint: Paint, text: CharSequence, start: Int, end: Int, fm: Paint.FontMetricsInt?): Int {
val space = paint.measureText(SPACE)
val size = paint.measureText(text, start, end)
return (space + size + 0.5f).toInt()
}
override fun draw(canvas: Canvas,
text: CharSequence,
start: Int,
end: Int,
x: Float,
top: Int,
y: Int,
bottom: Int,
paint: Paint) {
val textWithSpace = SpannableStringBuilder(text, start, end).append(SPACE)
canvas.drawText(textWithSpace, 0, textWithSpace.length, x.toFloat(), y.toFloat(), paint)
}
}