Ich möchte einen Bereich am Ende jeder Zeile in mehrzeiligen Zeichenfolgen hinzufügen. Ich habe versucht, nur ein Zeichen zu zeichnen, aber nichts erschien am Ende der Zeilen. Aber wenn ImageSpan
gesetzt ist, kann es Zeilenhöhe erhöhen, aber immer noch kein Bild an der Linie.Wie ImageSpan am Ende der Zeilen in mehrzeiligen Text hinzugefügt werden
private void addSpansAtEnd() {
String s = "First line\nSecond line\Third line\n";
SpannableStringBuilder e = new SpannableStringBuilder(s);
int stop = start + count;
for (int start = -1;
(start = s.indexOf("\n", start)) > -1 && start < stop;
++start) {
e.setSpan(
/*new ImageSpan(getContext(), R.drawable.ic_line),*/
new NewLineSpan(),
start,
start + 1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
/* Trying to replace \\n with other character. */
private class NewLineSpan extends ReplacementSpan {
@Override
public int getSize(
Paint paint,
CharSequence text,
int start,
int end,
Paint.FontMetricsInt fm) {
return 0;
}
@Override
public void draw(
Canvas canvas,
CharSequence text,
int start,
int end,
float x,
int top,
int y,
int bottom,
Paint paint) {
paint.setColor(0xFF666666);
canvas.drawText("o", x, y, paint);
}
}
Wie zeichne ich am Ende der Linien?
Ich vermute, Sie ein Bild wie dieses wollen: ↲ (Welche BTW Sie ein Zeichen verwenden können, wie Ich habe es anstelle eines Bildes gemacht. Die Frage ist also, willst du es nur auf deinen "harten" CR/LFs, dh wo du "\ n" in dein Beispiel steckst (was ¶ statt ↲ sein sollte), oder auch auf der "weiche" CR/LFs, dh wo hat 'TextView' entschieden, Ihren mehrzeiligen Text zu umbrechen? Weil die Handhabung der weichen CR/LFs eine zusätzliche Herausforderung darstellt. –
↲ ist \ u21B5, ¶ ist \ u00B6, leider \ u21B5 ist nicht in Roboto Schriftart, also nehme ich an, deshalb brauchen Sie ein Bild. –
Ich möchte nur Zeilenenden zeigen und die ursprüngliche Zeichenfolge nicht unterbrechen. Bild oder Zeichen, aber nur mit Spannen. – Pavel