首页 > 解决方案 > 从 SDK 版本 28 以下的 TypeFace 创建 TypeFaceSpan

问题描述

我找到了一种create TypeFaceSpan方法TypeFace

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

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

标签: androidtextviewandroid-typefaceandroid-spannable

解决方案


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)

推荐阅读