Wie setze ich Span für Sonderzeichen, wie \ n \ t \ r, etc? Gerade jetzt, wenn ich dies tun:EditText setSpan für Sonderzeichen
getText().setSpan(DynamicListView.mBackgroundColor, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Dank
Wie setze ich Span für Sonderzeichen, wie \ n \ t \ r, etc? Gerade jetzt, wenn ich dies tun:EditText setSpan für Sonderzeichen
getText().setSpan(DynamicListView.mBackgroundColor, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Dank
nicht zu 100% sicher, dass ich die Frage verstehen, wie die Sonderzeichen '\n'
nd '\r'
sind Zeilenumbrüche, so wie konnten sie gestylt werden, da sie unsichtbar sein ?
Das heißt, hier ist eine Methode zum Stylen bestimmter char
s in einem EditText
. Sie können am Ende der Methode beliebig viele Zeichen hinzufügen und alle Instanzen dieser Zeichen werden formatiert.
//...
editText.setText(getSpannedText(editText.getText(), `u`, `r`));
//...
private static SpannableString getSpannedText(String text, char... triggers) {
SpannableString spanString = new SpannableString(text);
for (int i = 0; i < spanString.length(); i++) {
for (char trigger : triggers) {
if (spanString.charAt(i) == trigger) {
spanString.setSpan(new ForegroundColorSpan(Color.CYAN), i, i+1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
}
return spanString;
}
auf meiner Seite Feste von Draw-Funktionen, hier ist der Code von EditText:
if(getText().toString().substring(start,end).indexOf("\t")>=0
|| getText().toString().substring(start,end).indexOf("\n")>=0
|| getText().toString().substring(start,end).indexOf("\r")>=0) {
TextPaint paint = new TextPaint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(mBackgroundColor);
paint.bgColor = mBackgroundColor;
Layout layout = getLayout();
int line = layout.getLineForOffset(start);
int baseline = layout.getLineBaseline(line);
int ascent = layout.getLineAscent(line);
float x = layout.getPrimaryHorizontal(start);
float y = baseline + ascent;
Rect rect = new Rect();
//rect.set(start, 0, Math.round(layout.getSecondaryHorizontal(end)), getLineHeight()+5);
rect.set(start, 0, Math.round(layout.getSecondaryHorizontal(end)), getLineHeight()+5);
rect.offset(Math.round(x), Math.round(y));
Log.d("debug","tabs " + rect.toString());
canvas.drawRect(rect, paint);
}
Ja, ich bin fast gleiche Lösung. Ja, \ n und \ r sind unsichtbar, aber \ t ist sichtbar und sieht aus wie Leerzeichen, aber Span funktioniert nicht genau für dieses Zeichen "\ t" – molds
@ user3901709 Ahh, ich verstehe. Ist es praktisch, das "" Zeichen vor dem Einstellen der Spanne durch etwas anderes zu ersetzen, z. B. ein Leerzeichen? d. h. 'string = string.replace ('\ t', '');' – PPartisan
Leider kann ich das nicht, bcz später muss ich diese Daten in Datei speichern (es ist Datei-Reader), und \ t wird dann verpasst – molds