"Hello#this#is#sample#text"という文字列の入力データがあります。spannable CharSequenceから文字を削除
#文字の間にあるすべての要素の背景色を設定します。ここに私がこれまでに持っていたものがあります:
public static CharSequence colorBackground(CharSequence text) {
Pattern pattern = Pattern.compile("#(.*?)#");
Spannable spannable = new SpannableString(text);
if(pattern != null)
{
Matcher matcher = pattern.matcher(text);
while(matcher.find())
{
int start = matcher.start();
int end = matcher.end();
CharacterStyle span = new BackgroundColorSpan(0xFF404040);
spannable.setSpan(span, start, end, 0);
}
}
return spannable;
}
背景色は設定されていますが、プレースホルダー文字もスタイリングされています。 CharSequenceのReplaceAllメソッドが存在しないため、結果を返す前にそれらを削除する方法?
この関数を使用して、ListViewのTextView行をスタイル設定します。このスタイリング機能を追加した後は、エミュレータで少し遅く感じます。たぶん私は他の何かの方法でそれにアプローチするべきでしょうか?カスタム描画機能を備えたカスタムTextViewを使用しますか?
あなたのお時間をいただきありがとうございます。スパンターブルは、最初は少し混乱しています。少なくとも、fromHtmlよりも速く動作します。 – joshas