Рад это слышать .. Отметьте этот вопрос как решенный, чтобы другие пользователи могли на него обратиться.
Kartik Domadiya
4
Можно было бы использовать третий подход Html.fromHtml("<u>This text will be underlined</u>"), но я должен признать, что я гораздо больший поклонник использования SpannableStrings. @Kartik: Вы также можете использовать a StrikethroughSpanв тексте, чтобы создать эффект зачеркивания. :)
МЗ.
Люблю 3-й подход. Короткий, простой и лаконичный, добавляющий в мою программу всего одну дополнительную строку кода.
Мэтт
Я знаю, что это старовато, но есть ли способ установить толщину подчеркивания?
Андреас Вонг
какой из них используется для содержимого preferenceActivity в PreferenceCategory?
разработчик Android
40
просто окружите свой текст тегом <u> в файле ресурсов string.xml
@CHAKRAVARTHI это не сработает, если вы передадите текст в строку перед настройкой. Напр. textView.setText(getString(R.string.text))<- неправильно . Правильно:textView.setText(getText(R.string.text)) или просто textView.setText(R.string.text). Причина beind это , что getText()возвращается Spannableс подчеркиванием пролетов, но если вы используете getString()это будет конвертировать Spannableв Stringрезультате пролетов удаляются.
Ярослав Мыткалык
хорошая точка зрения! Я отредактировал свой текущий ответ, чтобы быть более ясным
Если ваш TextView имеет фиксированную ширину, альтернативным решением может быть создание View, которое будет выглядеть как подчеркивание, и расположить его прямо под вашим TextView.
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));
Но Html.fromHtml (ресурс String) устарел в API 24.
Таким образом, вы можете использовать последнюю версию библиотеки поддержки Android androidx.core.text.HtmlCompat . Перед этим вам нужно включить зависимость в свой проект.
`implementation 'androidx.core:core:1.0.1'`
String html = "<u> 1.1 Underline using HtmlCompat.fromHtml()</u>";
//underline textview using HtmlCompat.fromHtml() method
textview11.setText(HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY));
Используя strings.xml ,
<string name="underline_text">1.3 <u>Underline using HtmlCompat.fromHtml() and string resource</u></string>
Ответы:
В TextView есть три способа выделить текст в нижнюю часть.
SpannableString
setPaintFlags (); TextView
Html.fromHtml ();
Позвольте мне объяснить вам все подходы:
1-й подход
Для подчеркивания текста в TextView вы должны использовать SpannableString
2-й подход
Вы можете использовать метод setPaintFlags TextView, чтобы подчеркнуть текст TextView.
Например,
Вы можете ссылаться на константы класса Paint, если хотите пробиться сквозь текст.
3-й подход
Использовать
Html.fromHtml(htmlString);
ИЛИ
источник
Html.fromHtml("<u>This text will be underlined</u>")
, но я должен признать, что я гораздо больший поклонник использования SpannableStrings. @Kartik: Вы также можете использовать aStrikethroughSpan
в тексте, чтобы создать эффект зачеркивания. :)просто окружите свой текст тегом <u> в файле ресурсов string.xml
и в вашей деятельности / фрагменте
источник
textView.setText(getString(R.string.text))
<- неправильно . Правильно:textView.setText(getText(R.string.text))
или простоtextView.setText(R.string.text)
. Причина beind это , чтоgetText()
возвращаетсяSpannable
с подчеркиванием пролетов, но если вы используетеgetString()
это будет конвертироватьSpannable
вString
результате пролетов удаляются.Это работает для меня.
источник
Для тех, кто все еще просматривает этот вопрос. Это для гиперссылки, но вы можете изменить ее для простого подчеркивания:
Создайте файл для рисования (hyperlink_underline.xml):
Создайте новый стиль:
Затем используйте этот стиль в своем TextView:
источник
Если ваш TextView имеет фиксированную ширину, альтернативным решением может быть создание View, которое будет выглядеть как подчеркивание, и расположить его прямо под вашим TextView.
источник
Простое и надежное решение - создать список слоев и сделать его фоном для TextView:
источник
5 удивительных способов подчеркнуть текстовое поле в Android - Kotlin / Java и XML
String html = "<u>Underline using Html.fromHtml()</u>"; textview.setText(Html.fromHtml(html));
Но Html.fromHtml (ресурс String) устарел в API 24.
Таким образом, вы можете использовать последнюю версию библиотеки поддержки Android androidx.core.text.HtmlCompat . Перед этим вам нужно включить зависимость в свой проект.
String html = "<u> 1.1 Underline using HtmlCompat.fromHtml()</u>"; //underline textview using HtmlCompat.fromHtml() method textview11.setText(HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY));
Используя strings.xml ,
<string name="underline_text">1.3 <u>Underline using HtmlCompat.fromHtml() and string resource</u></string>
textview13.setText(HtmlCompat.fromHtml(getString(R.string.underline_text), HtmlCompat.FROM_HTML_MODE_LEGACY));
используя PaintFlags
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); textview2.setText("2. Underline using setPaintFlags()");
с использованием SpannableString
источник