在我的应用中,我试图使用SuperscriptSpan
来显示一个点。但是我想相对于顶部更改该点的边距,最好是0。这就是结果的样子。
我希望该点与textView的顶部对齐,而现在它位于中间的某个位置。
这是我的代码:
SpannableStringBuilder cs = new SpannableStringBuilder("MyText.");
cs.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
谢谢!
答案 0 :(得分:1)
如果要更改SuperscriptSpan
的默认行为,则必须为其创建自己的自定义子类,并覆盖updateDrawState()
和updateMeasureState()
。
您可以在SuperscriptSpan
的{{3}}中查看它们的当前实现方式。这样的事情会将点推高到您现在所看到的位置:
@Override
public void updateDrawState(@NonNull TextPaint textPaint) {
textPaint.baselineShift += (int) ((2 * textPaint.ascent()) / 3);
}
@Override
public void updateMeasureState(@NonNull TextPaint textPaint) {
textPaint.baselineShift += (int) ((2 * textPaint.ascent()) / 3);
}