Android:使用SuperscriptSpan时更改上标的垂直位置

Android:使用SuperscriptSpan时更改上标的垂直位置,android,spannablestring,Android,Spannablestring,在我的应用程序中,我试图使用SuperscriptSpan来显示一个点。但是我想改变这个点相对于顶部的边距,理想情况下是0。这就是结果的样子 >我希望这个点与文本视图的顶部对齐,而现在它在中间的某个地方。 这是我的代码: SpannableStringBuilder cs = new SpannableStringBuilder("MyText."); cs.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_EXCLUSI

在我的应用程序中,我试图使用
SuperscriptSpan
来显示一个点。但是我想改变这个点相对于顶部的边距,理想情况下是0。这就是结果的样子

<> >我希望这个点与文本视图的顶部对齐,而现在它在中间的某个地方。

这是我的代码:

    SpannableStringBuilder cs = new SpannableStringBuilder("MyText.");
    cs.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

提前谢谢

如果要更改
SuperscriptSpan
的默认行为,必须创建自己的自定义子类,并重写和

您可以查看SuperscriptSpan,了解它们当前是如何实现的。像这样的东西会把圆点推得比你现在看到的更高:

@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);
}

如果要更改
SuperscriptSpan
的默认行为,必须创建自己的自定义子类,并重写和

您可以查看SuperscriptSpan,了解它们当前是如何实现的。像这样的东西会把圆点推得比你现在看到的更高:

@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);
}

完美的谢谢!完美的谢谢!