Как создать дополнительную строку (подчеркивание) в TextView?textview underline (дополнительный текст)
Например
line1:
|word1 word2 word3 word4| //size17
| word2 description | //size 6
line2:
|word4 word5 word6 word7 | //size17
| word7 description | //size6
EDIT 27,05:
предварительная версия. Любые идеи по улучшению?
public class DescriptionSpan extends ReplacementSpan {
String description;
Paint descriptionPaint;
public DescriptionSpan(Paint paint, String description) {
descriptionPaint = paint;
this.description = description;
}
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
float delta = getShift(paint, text.subSequence(start, end).toString(), description);
if (delta >= 0) {
canvas.drawText(text, start, end, x, y, paint);
canvas.drawText(description, 0, description.length(), x + delta, y + descriptionPaint.getTextSize(), descriptionPaint);
} else {
canvas.drawText(text, start, end, x - delta, y, paint);
canvas.drawText(description, 0, description.length(), x, y + descriptionPaint.getTextSize(), descriptionPaint);
}
}
@Override
public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {
return (int) Math.max(paint.measureText(text, start, end), descriptionPaint.measureText(description));
}
private float getShift(Paint paint, String text, String description) {
return (paint.measureText(text) - descriptionPaint.measureText(description))/2;
}
Похоже, что ваше сообщение в основном кода; пожалуйста, добавьте более подробную информацию ....
Я предполагаю, что вы не имеете в виду, что это сетка текстов, вы имеете в виду, что это слова в строках абзаца, и под обозначенным словом вы хотите получить дополнительный текст под этим словом. Это точно? Возможно, вы могли бы сказать еще немного о том, что вы делаете с этим текстовым дисплеем. –
есть. В основном необходимо описание вокруг (сверху или снизу) слова –
Для этого потребуется, по крайней мере, индивидуальный подкласс Span. Я посмотрю на это. Если бы кто-то дал мне это код, я бы подумал о создании пользовательского представления и сделать все текстовые измерения/вычисления/рендеринг напрямую. –