Answers:
在TextView中有三种在文本下划线的方法。
setPaintFlags(); TextView的
让我向您解释所有方法:
第一种方法
为了使TextView中的文本成为基础,您必须使用SpannableString
String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);
第二种方法
您可以使用TextView 的setPaintFlags方法在TextView的文本下划线。
例如。
mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");
如果要遍历文本,可以引用Paint类的常量。
第三种方法
利用 Html.fromHtml(htmlString);
String htmlString="<u>This text will be underlined</u>";
mTextView.setText(Html.fromHtml(htmlString));
要么
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
Html.fromHtml("<u>This text will be underlined</u>")
,但我必须承认我是使用SpannableStrings的忠实粉丝。@Kartik:您最好StrikethroughSpan
在文本上使用a 来创建删除线效果。:)
仅在string.xml资源文件中用<u>标记括住文本
<string name="your_string"><u>Underlined text</u></string>
在您的活动/片段中
mTextView.setText(R.string.your_string);
textView.setText(getString(R.string.text))
<-错误。正确: textView.setText(getText(R.string.text))
或者textView.setText(R.string.text)
。原因是此命令getText()
返回Spannable
带下划线的跨度,但如果使用getString()
它,则会将转换为Spannable
要String
删除的结果跨度。
对于仍然在看这个疑问的人。这是用于超链接的,但是您可以将其修改为仅显示以下划线:
创建一个可绘制对象(hyperlink_underline.xml):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="-10dp"
android:left="-10dp"
android:right="-10dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="2dp"
android:color="#3498db"/>
</shape>
</item>
</layer-list>
创建新样式:
<style name="Hyperlink">
<item name="android:textColor">#3498db</item>
<item name="android:background">@drawable/hyperlink_underline</item>
</style>
然后在您的TextView上使用此样式:
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
local:MvxBind="Text Id; Click ShowJobInfoCommand"
style="@style/HyperLink"/>
如果您的TextView具有固定的宽度,则替代解决方案是创建一个看起来像下划线的View,并将其放置在TextView的正下方。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/myTextView"
android:layout_width="20dp"
android:layout_height="wrap_content"/>
<View
android:layout_width="20dp"
android:layout_height="1dp"
android:layout_below="@+id/myTextView"
android:background="#CCCCCC"/>
</RelativeLayout>
一个简单而可持续的解决方案是创建一个图层列表,并将其作为TextView的背景:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-5dp"
android:right="-5dp"
android:top="-5dp">
<shape>
<stroke
android:width="1.5dp"
android:color="@color/colorAccent" />
</shape>
</item>
</layer-list>
在Android中为TextView下划线的5种惊人方法-Kotlin / Java和XML
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));
但是在API 24中不推荐使用Html.fromHtml(String resource)。
因此,您可以使用最新的android支持库androidx.core.text.HtmlCompat。在此之前,您需要在项目中包括依赖项。
`implementation 'androidx.core:core:1.0.1'`
String html = "<u> 1.1 Underline using HtmlCompat.fromHtml()</u>";
//underline textview using HtmlCompat.fromHtml() method
textview11.setText(HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY));
使用strings.xml,
<string name="underline_text">1.3 <u>Underline using HtmlCompat.fromHtml() and string resource</u></string>
textview13.setText(HtmlCompat.fromHtml(getString(R.string.underline_text), HtmlCompat.FROM_HTML_MODE_LEGACY));
使用PaintFlags
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
textview2.setText("2. Underline using setPaintFlags()");
使用SpannableString
`String content1 = "3.1 Underline using SpannableString";
SpannableString spannableString1 = new SpannableString(content1);
spannableString1.setSpan(new UnderlineSpan(), 0, content1.length(), 0);
textview31.setText(spannableString1);`