Может подчеркивать слова в тексте TextView

Есть ли возможность в Android предоставить TextView некоторый текст в коде Java с помощью функции setText(text) с основными тегами, такими как и сделать отмеченные слова подчеркнутыми?

5 ответов

Решение

Да, вы можете использовать метод Html.fromhtml():

textView.setText(Html.fromHtml("this is <u>underlined</u> text"));

Определите строку как:

<resources>
    <string name="your_string">This is an <u>underline</u> text demo for TextView.</string>
</resources>

Вы можете использовать UnderlineSpan из класса SpannableString:

SpannableString content = new SpannableString(<your text>);
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);

Тогда просто используйте textView.setText(content);

tobeunderlined= <u>some text here which is to be underlined</u> 

textView.setText(Html.fromHtml("some string"+tobeunderlined+"somestring"));

Вы можете использовать почти все теги HTML в TextView. Смотрите пример здесь.

Самый простой способ

TextView tv = findViewById(R.id.tv);
tv.setText("some text");
setUnderLineText(tv, "some");

Также поддержите дочерние элементы TextView, такие как EditText, Button, Checkbox.

public void setUnderLineText(TextView tv, String textToUnderLine) {
        String tvt = tv.getText().toString();
        int ofe = tvt.indexOf(textToUnderLine, 0);

        UnderlineSpan underlineSpan = new UnderlineSpan();
        SpannableString wordToSpan = new SpannableString(tv.getText());
        for (int ofs = 0; ofs < tvt.length() && ofe != -1; ofs = ofe + 1) {
            ofe = tvt.indexOf(textToUnderLine, ofs);
            if (ofe == -1)
                break;
            else {
                wordToSpan.setSpan(underlineSpan, ofe, ofe + textToUnderLine.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                tv.setText(wordToSpan, TextView.BufferType.SPANNABLE);
            }
        }
    }

Если ты хочешь

- Подчеркнутый текст с возможностью нажатия?

- Подчеркнуть несколько частей TextView?

Тогда проверьте этот ответ

Другие вопросы по тегам