关于这一点的任何身体想法,如何在textview上设置下划线文字? 如果是,请告诉。
我使用了以下代码,但它无效。
tvHide.setText(Html.fromHtml("<p><u>Hide post</u></p>").toString());
提前致谢
答案 0 :(得分:71)
您必须使用SpannableString:
String mystring=new String("Hello.....");
SpannableString content = new SpannableString(mystring);
content.setSpan(new UnderlineSpan(), 0, mystring.length(), 0);
yourtextview.setText(content);
更新:您可以通过各种方式在Underling TextView的here上引用我的答案。
答案 1 :(得分:43)
使用此
tvHide.setPaintFlags(tvHide.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
答案 2 :(得分:42)
以下是android中带下划线的文本的一些方法:
第一种方法
您可以在<table style="width:100%">
<tr>
<th>Firstname</th>
<td><input...></td>
</tr>
<tr>
<th>Lastname</th>
<td><input...></td>
</tr>
</table>
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"/>
第二种方法
要在TextView中为文本加下划线,可以使用SpannableString
txtView.setText(R.string.your_string);
第3种方法
您可以使用TextView的setPaintFlags方法为TextView的文本加下划线。
String text="Underlined Text";
SpannableString content = new SpannableString(text);
content.setSpan(new UnderlineSpan(), 0, text.length(), 0);
txtView.setText(content);
第4种方法
利用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"));
,那么以上都不会有效。为此,您必须在Caps中定义您的字符串,然后是上述任何一种方法。
答案 3 :(得分:8)
Android支持使用字符串xml中的 HTML 标记进行字符串格式设置。所以以下方法可行:
<string name="label_testinghtmltags"><u>This text has an underscore</u></string>
然后你就像平常一样使用它。您可以在文档here
中查看更多内容<强>更新强>
为了进一步扩展答案,documentation说:
...
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"))
答案 4 :(得分:6)
你几乎就在那里:只是不要在toString()
上拨打Html.fromHtml()
并获得一个可以完成工作的跨区对象;)
tvHide.setText(Html.fromHtml("<p><u>Hide post</u></p>"));
答案 5 :(得分:6)
试试这个,
tv.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);
答案 6 :(得分:4)
不需要使用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 );
答案 7 :(得分:1)
我相信您需要使用CharSequence。您可以找到示例here。
答案 8 :(得分:1)
你可以这样做:
tvHide.setText(Html.fromHtml("<p><span style='text-decoration: underline'>Hide post</span></p>").toString());
希望这有帮助
答案 9 :(得分:1)
在TextView
中显示下划线的简单方法是:
yourTextView.getPaint().setUnderlineText(true);
如果要删除该视图的下划线,则可以编写以下代码:
yourTextView.getPaint().setUnderlineText(false);
即使您设置了android:textAllCaps="true"
答案 10 :(得分:1)
您可以轻松地添加一个高度为1dp的View,将其正下方对齐TextView的开始和结尾。您还可以将marginTop与负值一起使用,以使下划线更接近TextView。如果在相对布局中使用TextView和under,则对齐会容易得多。这是示例:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:id="@+id/viewForgotPasswordUnderline"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_below="@id/txtForgotPassword"
android:layout_alignStart="@id/txtForgotPassword"
android:layout_alignEnd="@id/txtForgotPassword"
android:layout_marginTop="-2dp"
android:background="@color/lightGray" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txtForgotPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:paddingTop="8dp"
android:text="@string/userLoginForgotPassword"
android:textColor="@color/lightGray"
android:textSize="16dp" />
</RelativeLayout>
答案 11 :(得分:1)
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}" />
答案 12 :(得分:0)
在我的sign_in.xml
文件中,我使用了以下代码:
<Button
android:id="@+id/signuptextlinkbtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@android:color/transparent"
android:onClick="performSingUpMethod"
android:text="Sign up now!"
android:textColor="#5B55FF"
android:textSize="15dp"
android:textStyle="bold" />
在我的SignIn.java
文件中,我使用了以下代码:
import android.graphics.Paint;
Button signuptextlinkbutton = (Button) findViewById(R.id.signuptextlinkbtn);
signuptextlinkbutton.setPaintFlags(signuptextlinkbutton.getPaintFlags()| Paint.UNDERLINE_TEXT_FLAG);
现在,我可以看到带下划线的链接。甚至我以为我将其声明为Button
都只是文本。