25

我找到了一种create TypeFaceSpan方法TypeFace

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

但是这个 API 只允许API 级别 >= 28中使用。任何Compat libray 可以在 28 以下实现这一目标?

4

1 回答 1

43

TypeFaceSpan 是一个 MetricAffectingSpan。因此,即使没有任何确切的方法可以从中获取 ,我们也可以像下面一样使用它来代替.TypeFaceSpanSpanCustomTypeFaceSpanTypeFaceSpan

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)
于 2019-03-27T02:02:02.223 回答