2015-04-02 32 views
3

我將如何設置SpannableString與在strings.xml中定義的字符串?SpannableString在strings.xml中定義的文本中

例如,我有:%s liked your post

然後我做

SpannableString usernameSS = new SpannableString(username); 
usernameSS.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 0, username.length(), 0); 
getString(R.string.like_post, usernameSS); 

但它不工作 - 樣式不應用,我知道我可以使用HTML的<b><i>但有一種不需要求助於HTML的方法呢?正如我在以後可能需要插入一個更爲複雜的造型通過TextAppearanceSpan

回答

3

是的,這裏的秩序事情:

String finalString = getString(R.string.like_post, username); 
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(finalString); 
int startIndex = finalString.indexOf(username); 
spannableStringBuilder.setSpannable(new StyleSpan(Typeface.BOLD_ITALIC), startIndex, startIndex + username.length(), 0); 

應該這樣做。請檢查正確的開始/結束索引

+0

太棒了!如果我有兩個我想要在裏面設計風格的字符串,我可以調用'setSpannable'兩次嗎?謝謝! – 2015-04-02 10:09:38

+0

是的,你必須。 – Blackbelt 2015-04-02 10:10:36

+0

好,非常感謝!我還有另外一個問題,就是2個字符串可能與'%s對%s發表的評論發表了相同的評論,即發佈作者正在評論他自己的帖子,然後'indexOf'總是會選擇第一個一個(因此不是造型的第二個)。但這是我想弄明白的另一個問題。謝謝。接受即將來臨 – 2015-04-02 10:12:42