可以在 TextView 文本中为单词加下划线

Posted

技术标签:

【中文标题】可以在 TextView 文本中为单词加下划线【英文标题】:Can underline words in TextView text 【发布时间】:2012-01-23 09:35:20 【问题描述】:

android 中是否有可能在 Java 代码中为 TextView 提供一些带有 setText(text) 函数的文本,这些文本带有基本标签,如和 以使标记的单词加下划线?

【问题讨论】:

This will help you, 这是您可以underline textview 文本和italic 的示例。 How to display html in TextView?的可能重复 【参考方案1】:

是的,你可以,使用 Html.fromhtml() 方法:

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

【讨论】:

好吧,我遇到了一个问题。这是不起作用的代码行。 textView.setText(Html.fromHtml(getResources().getString(R.string.have_activation_code)));&lt;string name="have_activation_code"&gt;&lt;u&gt;I have activation code&lt;/u&gt;&lt;/string&gt; @mahbub.kuet 您必须将 HTML 字符串放入 。所以 我有激活码]]> Html.fromHtml 现已弃用【参考方案2】:

定义一个字符串为:

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

【讨论】:

是的,但是您可以通过使用 Html.fromHtml() 将其用于动态字符串,请查看上面的答案 ***.com/a/8558246/379693 @PareshMayani 但请注意,Html.fromHtml() 不支持某些标签。看看这个***.com/a/3150456/1987045【参考方案3】:

您可以使用 SpannableString 类中的 UnderlineSpan:

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

那就用textView.setText(content);

【讨论】:

【参考方案4】:
tobeunderlined= <u>some text here which is to be underlined</u> 

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

【讨论】:

【参考方案5】:

最简单的方法

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 的多个部分下划线?

然后Check This Answer

【讨论】:

以上是关于可以在 TextView 文本中为单词加下划线的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CListCtrl 中为单个项目加下划线

如何在Android中为按钮的文本加下划线?

如何在绘图标题或标签中为文本加下划线? (ggplot2)

如何在 MFC C++ 中为文本添加下划线

以编程方式在android中将下划线文本设置为TextView

如何在 Android XML 中为文本添加下划线?