android - 从 SDK 版本 28 以下的 TypeFace 创建 TypeFaceSpan
问题描述
我找到了一种create
TypeFaceSpan
方法TypeFace
:
fun getTypeFaceSpan(typeFace:TypeFace) = TypeFaceSpan(typeFace)
但是这个 API 只允许在API 级别 >= 28中使用。任何Compat libray 可以在 28 以下实现这一目标?
解决方案
TypeFaceSpan
是一个 MetricAffectingSpan
。因此,即使没有任何确切的方法可以从中获取 ,我们也可以像下面一样使用它来代替.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)
推荐阅读
- java - 用Java计算Excel一列的重复行数
- python-3.x - 如何从 Colab Notebook 中提取 Google Cloud Storage 存储桶中的 tar.gz 文件?
- sql - 如何为每个列值选择不同的项目数?
- birt - 在 AIX 上,BIRT 看到字体,rotatedtext 控件没有
- firebase - 如何在 us-central1 以外的区域使用 httpsCallable for web
- javascript - 向帖子添加新评论时“超出最大调用堆栈大小”
- r - 未使用 scale_fill_discrete 值
- php - 我从同一网络中的不同计算机获取相同的 IP 地址
- html - 为什么这个 html 'aside' 没有出现在侧面?
- node.js - 数据在数据库中发生变异但未更新