Я не знаю, как сделать конкретный текст на TextView стать жирным шрифтом.
это вот так
txtResult.setText(id+" "+name);
Я хочу, чтобы вывод был таким:
1111 Нил
id
и name
являются переменными, которые я получил значение из базы данных, и я хочу сделать id
жирным шрифтом, но только id
так, name
чтобы не повлияло, я понятия не имею, как это сделать.
android
textview
android-textattributes
Буди Дармаван
источник
источник
Ответы:
Просто создайте свою строку в HTML и установите ее:
источник
Html.fromHtml()
сейчас устарелаХотя вы можете использовать Html.fromHtml (), вы можете использовать более нативный подход - SpannableStringBuilder , но этот пост может быть бесполезным.
источник
Первое: вам не нужно беспокоиться об использовании медленного кода из ответа Рагхав Суда .
Второе: вам не нужно писать функцию расширения, предоставленную ответом w3bshark при использовании Kotlin.
Finnaly: все, что вам нужно сделать, это использовать библиотеку Kotlin android-ktx от Google (обратитесь сюда, чтобы узнать больше информации и как включить ее в ваш проект):
ОБНОВИТЬ:
Потому что я думаю, что это может помочь кому-то еще, а также продемонстрировать, как далеко вы можете зайти, здесь больше вариантов использования.
Когда вам нужно отобразить текст с некоторыми частями синим и курсивом:
Когда вам нужно отобразить текст жирным шрифтом и курсивом:
Короче говоря,
bold
,append
,color
иitalic
являются функциями расширения дляSpannableStringBuilder
. Вы можете увидеть другие функции расширения в официальной документации , откуда вы можете подумать о других возможностях.источник
Я думал, что выбранный ответ не дал удовлетворительного результата. Я написал свою собственную функцию, которая принимает 2 строки; Полный текст и часть текста, которую вы хотите выделить жирным шрифтом.
Он возвращает SpannableStringBuilder с пометкой «textToBold» из «текста».
Я считаю полезным сделать подстроку жирной, не оборачивая ее тегами.
источник
Как сказал wtsang02, использование HTML требует больших затрат. Просто используйте родное решение. Если вам не нужно изменять строку, просто используйте SpannableString, а не SpannableStringBuilder.
источник
Если вы хотите использовать строку из XML, вы можете сделать что-то вроде этого:
strings.xml (часть «CDATA» важна, иначе она не будет работать)
файл макета
код
источник
<string name="test"><b>text bold</b> other text</string>
. Не работает , если я пишу<![CDATA[
Это просто, просто закройте указанный текст, например, так
<b>"your text here:"</b>
Результат: Штаб-квартира: Мурсвилл, Северная Каролина, США
источник
Если вы используете Kotlin, это становится еще проще
core-ktx
, поскольку он предоставляет язык предметной области (DSL) для этого:Больше возможностей, предоставляемых этим:
Наконец, вы можете просто:
источник
Вот лучшее решение, если вы хотите сделать несколько текстов жирным шрифтом. Я улучшил код Эйтана. спасибо Эйтан.
источник
Основываясь на ответе @ mladj0ni, я получил приведенный ниже код для работы. Проблема заключалась в том, что если вы используете String.format , он удаляет разметку html, поэтому вам нужно экранировать символы скобок в strings.xml:
strings.xml:
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
code.java:
Это проще, чем SpannableStringBuilder. Что касается производительности, если вы отображаете только одну строку, то пользователь не заметит лишнюю миллисекунду для ее анализа.
Смотрите документацию здесь .
источник
Вы можете использовать этот код, чтобы выделить часть текста жирным шрифтом. Для всего, что находится между жирным html-тегами, оно станет жирным.
источник
Попробуй это. Это может помочь определенно
источник
Сделать первый символ строки включаемым при поиске символа в списке / рециркуляторе, например
предварительно выделив, как это, но я хотел быть, как показано ниже
для этого я искал длину слова, если она равна 1, я разделял основную строку на слова и вычислял начальную позицию слова, затем искал слово, начинающееся с символа.
источник
Я пришел сюда, чтобы предоставить более современное решение, потому что я не был удовлетворен существующими ответами. Мне нужно что-то, что будет работать для переведенных текстов и не имеет производительности использования
Html.fromHtml()
. Если вы используете Kotlin, здесь есть функция расширения, которая легко выделит жирным шрифтом несколько частей вашего текста . Это работает так же, как Markdown, и может быть расширен для поддержки других тегов Markdown, если это необходимо.источник
Ответ wtsang02 - лучший способ сделать это, так как теперь Html.fromHtml ("") устарел. Здесь я просто собираюсь немного его улучшить для тех, у кого возникают проблемы с динамическим выделением жирным шрифтом первого слова, независимо от размера предложения.
Сначала давайте создадим метод, чтобы получить первое слово:
Теперь предположим, что у вас есть длинная строка, подобная этой:
И вы хотите, чтобы ваше предложение было похоже на yourAwesomeName@gmail.com , чтобы оно было вашим другом! Все, что вам нужно сделать, - это набрать первое слово и набрать длину, чтобы жирное слово было первым, примерно так:
Теперь просто следуйте инструкциям wtsang02 , например:
И это все! Теперь вы должны иметь возможность выделять слово любого размера из длинного / короткого предложения. Надеюсь, это поможет кому-то, счастливое кодирование :)
источник
Это функция расширения Kotlin, которую я использую для этого
Использование:
,
источник
Вы можете добавить две строки отдельно в компоновщик, одна из которых - spannedString, другая - обычная. Таким образом, вам не нужно рассчитывать индексы.
источник
если положение полужирного текста является фиксированным (например, если находится в начале textView), то используйте два разных textView с одинаковым фоном. Затем вы можете сделать текстовый стиль другого textView жирным.
Это потребует вдвое больше памяти по сравнению с одним textView, но скорость увеличится.
источник
Еще один более индивидуальный код
источник
В случае, если кто-то использует привязку данных. Мы можем определить привязку адаптера, как это
Тогда мы можем использовать его в TextView
где bold_text
источник
Найден способ, если вы хотите обрабатывать локализацию на нескольких языках, скучно это делать, но это работает, давайте предположим, что мы хотим этого:
По-английски:
На испанском:
Вы должны создать 3 строки
Английский:
Испанский:
Теперь вы можете сделать это:
источник
Ваш строковый ресурс
ваш класс Java
источник
Вот мое полное решение для динамических значений String с проверкой регистра.
Например. completeString = "Я BOLD"
В случае, если
*targetStringToFormat* = "bold"
и*matchCase* = true
Случай II, если
*targetStringToFormat* = "bold"
и*matchCase* = false
Применять:
Надеюсь, это поможет!
источник