\ n \ t \ rなどの特殊文字のスパンを設定する方法は?私はこれを行う場合は今:EditText setSpan(特殊文字用)
getText().setSpan(DynamicListView.mBackgroundColor, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
を特殊文字'\n'
ND '\r'
が改行されているようおかげで
\ n \ t \ rなどの特殊文字のスパンを設定する方法は?私はこれを行う場合は今:EditText setSpan(特殊文字用)
getText().setSpan(DynamicListView.mBackgroundColor, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
を特殊文字'\n'
ND '\r'
が改行されているようおかげで
100%は確かに私は、質問を理解していないので、彼らは目に見えないだろうとどのようにそれらがスタイリングすることができ?
つまり、EditText
の中に特定のchar
をスタイリングする方法があります。メソッドの最後に好きなだけ多くの文字を追加することができ、それらの文字のインスタンスはすべてスタイル付けされます。図形描画機能によって私の側に固定
//...
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;
}
、ここでの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);
}
はい、私はほぼ同じ溶液を使用していますが。はい、\ nと\ rは見えませんが、\ tは表示され、スペースのように見えますが、Spanはこの文字 "\ t"に対して正確に動作していません。 – molds
@ user3901709スパンを設定する前に '' \ t''文字をスペースのようなものに置き換えるのは現実的ですか? (文字列= string.replace( '\ t'、 ''); ' – PPartisan
残念ながらこれを行うことはできません、bcz後でこのデータをファイルに保存する必要があります(ファイルリーダーです)。 – molds