关于这一点的任何身体想法,如何在textview上设置下划线文字?如果是的话,请告诉我.
我使用了以下代码,但它不起作用.
tvHide.setText(Html.fromHtml("<p><u>Hide post</u></p>").toString());
提前致谢
Kar*_*iya 76
您必须使用SpannableString:
String mystring=new String("Hello.....");
SpannableString content = new SpannableString(mystring);
content.setSpan(new UnderlineSpan(), 0, mystring.length(), 0);
yourtextview.setText(content);
更新:您可以通过各种方式参考我在这里的 Underling TextView的答案.
aks*_*hay 53
以下是android中带下划线的文本的一些方法:
第一种方法
您可以在中定义字符串 strings.xml
<string name="your_string"><u>Underlined text</u></string>
并在您的xml文件中使用该字符串
<TextView
            android:id="@+id/txt_underlined"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/your_string"/>
或者您可以在Activity/Fragment中使用该字符串
txtView.setText(R.string.your_string);
第二种方法
要在TextView中为文本加下划线,可以使用SpannableString
String text="Underlined Text";
SpannableString content = new SpannableString(text);
content.setSpan(new UnderlineSpan(), 0, text.length(), 0);
txtView.setText(content);
第三种方法
您可以使用TextView的setPaintFlags方法为TextView的文本加下划线.
txtView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
txtView.setText("Underlined Text");
第四种方法
利用Html.fromHtml(htmlString);
String htmlString="<u>Underlined Text</u>";
txtView.setText(Html.fromHtml(htmlString));
要么
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
注意:
如果您android:textAllCaps="true"在布局中添加了这一行,那么以上都不会起作用.为此,您必须在Caps中定义字符串,然后使用上述任何方法.
小智 45
用这个
tvHide.setPaintFlags(tvHide.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Android支持使用字符串xml中的HTML标记进行字符串格式设置.所以以下方法可行:
<string name="label_testinghtmltags"><u>This text has an underscore</u></string>
然后你就像平常一样使用它.您可以在此处的文档中查看更多内容
更新:
为了进一步扩展答案,文档说:
...
format(String, Object...)和getString(int, Object...)方法从字符串中删除所有样式信息..解决这个问题的方法是使用转义实体编写HTML标记,然后在格式化后使用fromHtml(String)恢复这些实体
例如,以下代码段中的结果字符串不会显示为包含下划线元素:
<string name="html_bold_test">This <u>%1$s</u> has an underscore</string>
String result = getString(R.string.html_bold_test, "text")
但是,以下代码段的结果将包含下划线:
<string name="html_bold_test">This <u> %1$s </u> has an underscore</string>
String result = Html.fromHtml(getString(R.string.html_bold_test, "text"))
你几乎就在那里:只是不要打电话toString()给Html.fromHtml()你,你会得到一个可以完成工作的跨物体;)
tvHide.setText(Html.fromHtml("<p><u>Hide post</u></p>"));
不需要使用 HTML 属性,让我们关注 java xD 我遇到了同样的问题,我找到了在 java 中执行此操作的方法:
String text="Hide post";
TextView tvHide=(TextView)findViewById(R.id.text);
SpannableString spanString = new SpannableString(text);
spanString.setSpan(new UnderlineSpan(), 0, spanString.length(), 0);
tvHide.setText(spanString );
显示下划线的简单方法TextView是:  
yourTextView.getPaint().setUnderlineText(true);
如果要删除该视图的下划线,可以编写以下代码:
yourTextView.getPaint().setUnderlineText(false);  
即使你设置了它也会工作 android:textAllCaps="true"
val text = getString(R.string.welcome)
val spannableString = SpannableString(text).apply {
    setSpan(UnderlineSpan(), 0, text.length, 0)
}
text_view.text = spannableString
fun TextView.underline(resource: Int) {
    val text = context.getString(resource)
    val spannableString = SpannableString(text).apply {
        setSpan(UnderlineSpan(), 0, text.length, 0)
    }
    setText(spannableString)
}
用法:
text_view.underline(R.string.welcome)
@BindingAdapter("underline")
fun underline(view: TextView, resource: Int) {
    if (resource == 0) return
    val text = view.context.getString(resource)
    val spannableString = SpannableString(text).apply {
        setSpan(UnderlineSpan(), 0, text.length, 0)
    }
    view.text = spannableString
}
用法:
<TextView
    android:id="@+id/tv_report_problem"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:underline="@{@string/common_report_problem}" />
| 归档时间: | 
 | 
| 查看次数: | 103948 次 | 
| 最近记录: |