0

我有一个字符串数组,其中包含几个段落。一个单词包含斜体字体。我如何为特定的 word-textview 应用斜体字体。我知道我们可以使用 spannable 应用斜体。但还有其他方式吗?

<string-array name="string_collections" formatted="false">
<item>nutrients and weakens the <![CDATA[<i>Agni</i>]]>(digestive fire) within the stomach. Ayurveda recommends sipping minimal amounts during meals, with larger volumes spaced throughout the day, always away from food.
 \n</item>

它显示为text。使用 Html.fromHtml 方法没有效果。

4

2 回答 2

1

试试这个:-

试试 Html.fromHtml(),并用粗体和斜体 HTML 标签标记你的文本,例如:

Spanned text = Html.fromHtml("This mixes <b>bold</b> and <i>italic</i> stuff");
textView.setText(text);
于 2015-10-29T14:57:51.607 回答
0

我找到了一个更好的方法我自己。只需使用 Matcher 并获取它的索引。

     java.util.regex.Pattern p =
                                    java.util.regex.Pattern.compile("(^|\\s)word\\b",
                                            java.util.regex.Pattern.CASE_INSENSITIVE);
                   final Matcher matcher = p.matcher(whole_text);


        final SpannableStringBuilder spannable = new SpannableStringBuilder(whole_text);
                            while (matcher.find()) {
                                Log.e("Spannable", "Spannable" +"Matchfound");
                      //apply span which you want.
 spannable.setSpan(new StyleSpan(Typeface.ITALIC), matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                            }
                            tvtextmsg.setText(spannable);

注意:如果您尝试如下操作,刚刚发现我在使用时遇到的另一个问题

 tvtextmsg.setText(spannable+"\n \n"+another_text);

spannable 不会受到影响。你需要这样做

tvtextmsg.setText(spannable);
tvtextmsg.append("\n \n"+another_text)
于 2015-10-29T18:19:02.067 回答