Изменить текст Цвет фона конкретного слова в TextView

Я хочу изменить цвет фона определенного слова в TextView :

Как изображение ниже

Введите описание изображения здесь

Вот мой рабочий код, который можно использовать для выделения некоторой части строки:

  private void highlightTextPart(TextView textView, int index, String regularExpression) { String fullText = textView.getText().toString(); int startPos = 0; int endPos = fullText.length(); String[] textParts = fullText.split(regularExpression); if (index < 0 || index > textParts.length - 1) { return; } if (textParts.length > 1) { startPos = fullText.indexOf(textParts[index]); endPos = fullText.indexOf(regularExpression, startPos); if (endPos == -1) { endPos = fullText.length(); } } Spannable spannable = new SpannableString(fullText); ColorStateList blueColor = new ColorStateList(new int[][] { new int[] {}}, new int[] { Color.BLUE }); TextAppearanceSpan textAppearanceSpan = new TextAppearanceSpan(null, Typeface.BOLD_ITALIC, -1, blueColor, null); BackgroundColorSpan backgroundColorSpan = new BackgroundColorSpan(Color.GREEN); spannable.setSpan(textAppearanceSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(backgroundColorSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(spannable); } 

Затем в вашей деятельности вызовите следующее:

  int index = 3; String regularExpression = " "; String text = "Hello StackOverflow From BNK!"; TextView textView = (TextView) findViewById(R.id.textView); if (textView != null) { textView.setText(text); highlightTextPart(textView, index, regularExpression); } 

Введите описание изображения здесь

Попробуй это

 String str = "Some really long string goes in here"; Spannable spannable = new SpannableString(str); spannable.setSpan(new BackgroundColorSpan( getResources().getColor(android.R.color.black) ), 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); yourTextView.setText(spannable); 

Посмотреть ссылку

  String string = "As Soon As"; SpannableString spannableString = new SpannableString(string); toolBarSpan.setSpan(new BackgroundColorSpan(Color.parseColor("#ff0000")), 3, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); yourTextView.setText(toolBarSpan); 

Что такое Spannable & How it works? Прикрепите указанный объект разметки к началу диапазона … в конце текста или переместите объект в этот диапазон, если он уже был прикреплен в другом месте. Для более подробной информации, пожалуйста, вы можете проверить setSpan от Spannable и также знать, как требуется номер начала и конца (например, в anser 3 и 7 в BackgroundColorSpan

ОБНОВИТЬ

Используйте этот рабочий код

 String mainString = "As Soon As"; String subString = "Soon"; if(mainString.contains(subString)) { int startIndex = mainString.indexOf(subString); int endIndex = startIndex + subString.length(); SpannableString spannableString = new SpannableString(mainString); spannableString.setSpan(new BackgroundColorSpan(Color.parseColor("#ff0000")), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(spannableString); }