-4
String highlightedWords[] = {"We", "country"};

String fullText = "We love our country a lot.";

textview.setText(fullText);

输出将是这样的: 我们非常热爱我们的国家

4

2 回答 2

2

您可以实现如下相同

 //Create new list
    ArrayList<String> mList = new ArrayList<>();
    //Words to split
    String words[] = {"We", "country"};
    //main string
    String full_text = "We love our country a lot.";
    //split strings by space
    String[] splittedWords = full_text.split(" ");
    SpannableString str=new SpannableString(full_text);
    //Check the matching words
    for (int i = 0; i < words.length; i++) {
      for (int j = 0; j < splittedWords.length; j++) {
        if (words[i].equalsIgnoreCase(splittedWords[j])) {
          mList.add(words[i]);
        }
      }
    }
    //make the words bold
    for (int k = 0; k < mList.size(); k++) {
      int val = full_text.indexOf(mList.get(k));
      str.setSpan(new StyleSpan(Typeface.BOLD), val, val + mList.get(k).length(),
          Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
//set text
    ((TextView)findViewById(R.id.tvSample)).setText(str);
于 2018-04-19T09:58:28.350 回答
1

最适合我并且是最优雅的解决方案

ArrayList<String> wordsToHighlight = new ArrayList<>(Arrays.asList("We", "country");
String fullText = "We love our country a lot. Our country is very good.";
SpannableString spannableString = new SpannableString(fullText);

ArrayList<String> brokenDownFullText = new ArrayList<>(Arrays.asList(fullText.split(" ")));
brokenDownFullText.retainAll(wordsToHighlight);
for (String word : brokenDownFullText) {
   int indexOfWord = fullText.indexOf(word);
   spannableString.setSpan(new StyleSpan(Typeface.BOLD), indexOfKeyword, indexOfKeyword + word.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}

textView.setText(spannableString);
于 2019-11-25T23:30:10.450 回答