Android: изменение вертикального положения верхнего индекса при использовании SuperscriptSpan - PullRequest
0 голосов
/ 25 марта 2019

В моем приложении я пытаюсь использовать SuperscriptSpan, чтобы показать точку.Но я хочу изменить поле этой точки относительно вершины, в идеале 0. Вот так будет выглядеть результат.

Я бы хотел, чтобы точка совпала с верхом textView, а сейчасэто где-то посередине.

enter image description here

Это мой код:

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

Заранее спасибо!

1 Ответ

1 голос
/ 25 марта 2019

Если вы хотите изменить поведение по умолчанию SuperscriptSpan, вам нужно создать свой собственный подкласс и переопределить updateDrawState() и updateMeasureState() .

Вы можете посмотреть исходный код для 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...