在Android程序中以编程方式将下划线文本设置到TextView

54

我想知道如何在Android的TextView中设置带下划线的文本?请注意,我没有能力使用预填充字符串设置strings.xml,有没有办法通过纯Java代码在Android中添加它。


请查看以下帖子: https://dev59.com/F3E95IYBdhLWcg3wPrgI - Yngwie89
4
6 种方法 - 在 Android 中给 TextView 加下划线 - Vijay Ram
7个回答

128

试试这段代码:

textview.setPaintFlags(textview.getPaintFlags()| Paint.UNDERLINE_TEXT_FLAG);

去掉下划线怎么样? - Pratik Butani
5
textview.setTypeface(Typeface.NORMAL); - Developers Park
这是最佳解决方案,每个人都应该使用这段代码,一行可行的代码。谢谢,继续保持。 - Pir Fahim Shah

22

以下是最简单的方法

TextView theTextView = new TextView(this);

theTextView.setText(Html.fromHtml("<u>Text to underline</u>"));

方法“fromHtml”已被弃用。 - prsnlme

21

Kotlin之路

textview.paintFlags = Paint.UNDERLINE_TEXT_FLAG

这会破坏字体,最好使用SpannableString。 - Emmanuel Conradie

20

只需尝试这个:

TextView myTextView = new TextView(this);
SpannableString mySpannableString = new SpannableString("My String");
mySpannableString.setSpan(new UnderlineSpan(), 0, mySpannableString.length(), 0);
myTextView.setText(mySpannableString);

9
我不知道是否还有人对这个话题感兴趣,但我发现 textview.setTypeface(Typeface.NORMAL); 对我无效。我的解决方案是使用以下代码片段:textView.setPaintFlags(0);

谢谢分享。我遇到了同样的问题。 - Andrain

1

对于 Kotlin .. 在 TextView 或 String 中使用下划线 使用 HtmlCompat.fromHtml() 方法

val html = "<u> The text you want to underline </u>"
textview11.text = HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY)

用于布局 XML

<string name="text_underline"><u> The text you want to underline </u></string>

1

这是用 Kotlin 编写的文本下划线扩展

fun String.underLine(): SpannableString {
    val spanStr = SpannableString(this)
    spanStr.setSpan(UnderlineSpan(), 0, spanStr.length, 0)
    return spanStr
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接