我想給字符串中的前兩個字賦予一些樣式效果(如粗體,刪除線)。 我這樣做的方式受此啓發thread。使用Spannable字符串設計兩個第一個字
String[] tokens = text.split(" ");
String twoFirstWords = tokens[0] + " " + tokens[1]; //two first words
String content = text.replaceFirst(twoFirstWords, " "); //the rest
SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString span1 = new SpannableString(twoFirstWords);
SpannableString span2 = new SpannableString(content);
span1.setSpan(new StyleSpan(Typeface.BOLD), 0, twoFirstWords.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
span1.setSpan(new StrikethroughSpan(),0, twoFirstWords.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
span1.setSpan(new CustomTypefaceSpan("", fontFirst), 0, twoFirstWords.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
span2.setSpan(new CustomTypefaceSpan("", fontContent), 0, content.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
builder.append(span1);
builder.append(span2);
textView.setText(builder, TextView.BufferType.SPANNABLE);
基於上面的代碼,我想只有兩個第一句話。然而,這些影響也被應用於內容給BOLD和刪除線的效果。
當我爲字符串中的最後兩個單詞應用樣式時,此代碼正常工作,但在使用第一個單詞時保持失敗。我懷疑這是因爲.SetSpan
(或者情況並非如此)的錯誤開始和結尾......我仍然無法找到開始和結束的正確索引..任何人都可以幫助我解決這個問題嗎?謝謝。
嘗試SPAN_EXCLUSIVE_EXCLUSIVE – pskink
omg。它的工作..謝謝你。一個upvote爲你:) 反正..什麼是EXCLUSIVE_EXCLUSIVE和EXCLUSIVE_INCLUSIVE的意思是? – Lynx
請參閱http://stackoverflow.com/questions/16531555/what-is-the-difference-between-span-point-mark-and-span-mark-point – pskink