我正在尝试创建一个扩展 ImageSpan 的自定义类,因为我需要跨度上的某种边距/填充。
我认为我需要做的是覆盖 getSize 函数以返回更大的宽度,以便跨度以图形方式隔开。
问题是,一旦我覆盖 getSize 函数,我的视图就会完全搞砸。我有根据的猜测是,我在那个函数中做了一些愚蠢的事情,但我不知道是什么。
自定义类代码:
class PaddingImageSpan(drawable: Drawable, private val offset: Float = 0f) : ImageSpan(drawable) {
override fun getSize(
paint: Paint,
text: CharSequence?,
start: Int,
end: Int,
fm: Paint.FontMetricsInt?
): Int {
val width = paint.measureText(text, start, end)
val fontMetricsInt = paint.fontMetricsInt
if (fm != null){
fm.ascent = fontMetricsInt.ascent
fm.bottom = fontMetricsInt.bottom
fm.descent = fontMetricsInt.descent
fm.leading = fontMetricsInt.leading
fm.top = fontMetricsInt.top
}
println(width)
return width.roundToInt()
}
}