如何在TextView中创建辅助线(下划线)?textview下划线(辅助文本)
例如
线路1:
|word1 word2 word3 word4| //size17
| word2 description | //size 6
线路2:
|word4 word5 word6 word7 | //size17
| word7 description | //size6
编辑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子类。我会看看这个。如果有人给我这个代码,我会考虑写一个自定义视图,并直接进行所有的文本测量/计算/渲染。 –