我有一個字符串,我想要顏色的特定字。這些詞是以#開始的那個詞。Android通過字符串循環來顏色特定字
if(title.contains("#")){
SpannableString WordtoSpan = new SpannableString(title);
int idx = title.indexOf("#");
if (idx >= 0) {
Pattern pattern = Pattern.compile("[ ,\\.\\n]");
Matcher matcher = pattern.matcher(title);
int wordEnd = matcher.find(idx)? matcher.start() : -1;
if (wordEnd < 0) {
wordEnd = title.length();
}
WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE),
idx,
wordEnd,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
holder.txtTitle.setText(WordtoSpan);
} else {
holder.txtTitle.setText(title);
}
現在讓我們如此字符串 粗體部分是例如彩色字。
我愛奶酪#burgers,並與#ketchup。
^這是我目前用我的代碼。我想要的是爲每個#
單詞着色,而不僅僅是第一個單詞。
ex。它就會像
我愛奶酪#burgers,並與#ketchup。
我想我需要循環?但無法得到它明確和工作x.x中
更新: 最新嘗試。列表變爲空白。
SpannableString WordtoSpan = new SpannableString(title);
int end = 0;
Pattern pattern = Pattern.compile("[ ,\\.\\n]");
Matcher matcher = pattern.matcher(title);
int i = title.indexOf("#");
for (i = 0; i < title.length(); i++) {
if (i >= 0) {
int wordEnd = matcher.find(i)? matcher.start() : -1;
if (wordEnd < 0) {
wordEnd = title.length();
}
WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE),
i,
wordEnd,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
i = end;
}
holder.txtTitle.setText(WordtoSpan);
}
沒有任何變化,顏色與其他文字保持一致。 –
@JohnJared添加了上面的截圖。問題可能在代碼中的其他位置? – Vikram
嗯,找出原因。在我的應用程序Cuz我有阿拉伯文字母#這就是我爲什麼,但是當我改變阿拉伯文到他們工作。我怎樣才能讓它變成阿拉伯語的顏色呢? –