Intereting Posts
Android – вам когда-либо приходилось добавлять фрагменты в манифест Android – Как определить, выбрал ли пользователь, чтобы поделиться с Facebook или Twitter с помощью намерений? Как получить текущую позицию в FragmentPagerAdapter? Как использовать Kotlin coroutines wait () в главной теме Исключение поврежденной трубы (отказ отправителя: EPIPE (Broken pipe)) в модификации Как установить значение по умолчанию для ListPreference Элементы меню «Ящик навигации», выбранные в разных группах Маскированный ввод с помощью виджета EditText в Android Ошибка AsyncTask и Looper.prepare () NETWORK_PROVIDER не предоставляет обновленные местоположения Привет, мировой модуль ядра для android и неизвестного переселения: 27, когда insmod Android ContentProvider и Google IO Rest Talk Список зарезервированных слов в Android Метод openOrCreateDatabase (String, int, null) не определен Откройте диалоговое окно, щелкнув по кнопке, входящей в уведомление в андроид

Изменение цвета текста одного слова в TextView

Я ищу способ изменить цвет текста одного слова в TextView изнутри Activity .

Например, при этом:

 String first = "This word is "; String next = "red" TextView t = (TextView) findViewById(R.id.textbox); t.setText(first + next); 

Как изменить цвет next текста на красный?

Solutions Collecting From Web of "Изменение цвета текста одного слова в TextView"

Самый простой способ, который я знаю, – просто использовать html.

 String first = "This word is "; String next = "<font color='#EE0000'>red</font>"; t.setText(Html.fromHtml(first + next)); 

Но это потребует от вас перестроить TextView, когда (если?) Вы хотите изменить цвет, что может вызвать проблемы.

 t.setText(first + next, BufferType.SPANNABLE); Spannable s = (Spannable)t.getText(); int start = first.length(); int end = start + next.length(); s.setSpan(new ForegroundColorSpan(0xFFFF0000), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

Вы должны использовать spannable, это также позволит вам увеличить размер текста, сделать его полужирным и т. Д. Даже на несколько изображений.

Или вы можете использовать класс Spannable .

http://developer.android.com/reference/android/text/Spannable.html

Используйте SpannableStringBuilder следующим образом:

 SpannableStringBuilder builder = new SpannableStringBuilder(); SpannableString str1= new SpannableString("Text1"); str1.setSpan(new ForegroundColorSpan(Color.RED), 0, str1.length(), 0); builder.append(str1); SpannableString str2= new SpannableString(appMode.toString()); str2.setSpan(new ForegroundColorSpan(Color.GREEN), 0, str2.length(), 0); builder.append(str2); TextView tv = (TextView) view.findViewById(android.R.id.text1); tv.setText( builder, TextView.BufferType.SPANNABLE); 

Если вы хотите изменить состояние всех экземпляров конкретной String в тексте TextView (без SpannableString регистра), вы можете использовать StringBuilder s и SpannableString следующим образом:

 StringBuilder textBuilder = new StringBuilder(myTextView.getText().toString()); StringBuilder searchedTextBuilder = new StringBuilder((mySearchedString)); SpannableString spannableString = new SpannableString(myTextView.getText().toString()); int counter = 0; int index = 0; for (int i = 0;i < textBuilder.length() - mySearchedString.length() - 1;i++) { counter = 0; if (Character.toLowerCase(textBuilder.charAt(i)) == Character.toLowerCase(searchedTextBuilder.charAt(index))) { counter++; index++; for (int j = 1,z = i + 1;j < mySearchedString.length() - 1;j++,z++) { if (Character.toLowerCase(textBuilder .charAt(z)) == Character.toLowerCase(searchedTextBuilder .charAt(index))) { counter++; index++; } else { index++; if (index % mySearchedString.length() == 0) { index = 0; } break; } } if (counter == mySearchedString.length() - 1) // A match { spannableString.setSpan(new ForegroundColorSpan(Color.RED), i, i + mySearchedString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // Do the change you want(In this case changing the fore ground color to red) index = 0; continue; } else { index = 0; continue; } } } myTextView.setText(spannableString); 

}

  • Сохраните весь текст TextView внутри StringBuilder .
  • Сохраните искомую строку внутри StringBuilder .
  • Сохранение текста TextView целиком внутри SpannableString
  • Сделайте простую операцию, чтобы найти все экземпляры String внутри текста TextView и изменить их при достижении.
  • Задайте текстовое значение TextView для SpannableString .