Wie erstellt man eine sekundäre Zeile (Unterstrich) in TextView?textview unterstreichen (sekundärer Text)
Zum Beispiel
line1:
|word1 word2 word3 word4| //size17
| word2 description | //size 6
line2:
|word4 word5 word6 word7 | //size17
| word7 description | //size6
EDIT 27.05:
Preview-Version. Irgendwelche Ideen, wie man sich verbessert?
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;
}
Es sieht aus wie Ihr Beitrag ist meist Code; Bitte fügen Sie weitere Details hinzu ....
Ich denke, du meinst nicht, dass dies ein Raster von Texten ist, du meinst, dass dies Wörter innerhalb von Zeilen eines Absatzes sind, und an einem bestimmten Wort, willst du einen sekundären Text unter diesem Wort. Ist das genau? Vielleicht könntest du mehr darüber sagen, was du mit dieser Textanzeige machst. –
ja. Grundsätzlich brauchen Beschreibung um (oben oder unten) Wort –
Dies würde mindestens eine benutzerdefinierte Span-Unterklasse erfordern. Ich werde es mir ansehen. Wenn mir jemand das zum Codieren gab, würde ich überlegen, eine benutzerdefinierte Ansicht zu schreiben und alle Textmessungen/Berechnungen/Rendering direkt durchzuführen. –