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