Создать TypeFaceSpan из TypeFace ниже SDK версии 28 - PullRequest
1 голос
/ 27 марта 2019

Я нашел способ create TypeFaceSpan из TypeFace, например:

fun getTypeFaceSpan(typeFace:TypeFace) = TypeFaceSpan(typeFace)

Но этот API разрешен только в уровень API> = 28 .Любой Compat libray для достижения этого ниже 28 ?

1 Ответ

3 голосов
/ 27 марта 2019

TypeFaceSpan - это MetricAffectingSpan. Таким образом, даже если не существует точного пути к get TypeFaceSpan из Span, мы можем сделать CustomTypeFaceSpan, как показано ниже, и использовать его вместо TypeFaceSpan.

class CustomTypefaceSpan(private val typeface: Typeface?) : MetricAffectingSpan() {
    override fun updateDrawState(paint: TextPaint) {
        paint.typeface = typeface
    }

    override fun updateMeasureState(paint: TextPaint) {
        paint.typeface = typeface
    }
}

И используйте это так:

val typeFaceSpan = CustomTypefaceSpan(typeface)
...