我使用的TextView使用以下字符串:
android:text="@string/menu"
该字符串在<string name="menu"><u>MENU</u></string>
文件中定义为strings.xml
。
但是,下划线仅显示在虚拟设备中,但不显示在预览中,更重要的是,不显示在真实设备中。 有什么问题?
答案 0 :(得分:0)
您可以使用SpannableString类中的UnderlineSpan为文本加下划线:
SpannableString content = new SpannableString(<your text>);
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
然后使用textView.setText(content);
您需要使用Html.fromHtml()
在XML字符串中使用HTML。只需在布局XML中引用带有HTML的String,就无法在JVM中使用。
SDK&lt; Android Nougat使用:
myTextView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>"));
SDK&gt; = Android Nougat:
myTextView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>", Html.FROM_HTML_MODE_COMPACT));
要区分Android版本,请使用Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
。
答案 1 :(得分:0)
或只是使用此
textview.setPaintFlags(textview.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
答案 2 :(得分:0)
我遇到了类似的问题:在某些设备上,下划线效果很好,但在其他设备上(诺基亚 10、阿尔卡特),根本看不到下划线。无论是使用 Spannables、Paintflags、Html。我想这与提供程序的硬件或 Android 版本有关 - 不管怎样,我需要一个解决方案,我想出了以下内容:
我在实际文本下使用了一个非常细的视图,它只是渲染了一条白线。我将其可见性设置为 VIEW.Visible 或 VIEW.Gone 以添加下划线或删除下划线。为了让这个视图靠近文本,我使用了约束布局并将其约束在视图的底部、左侧和右侧。 (但也许线性布局也适用,对我来说,Contraint 布局很灵活,我喜欢这样。)
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/actual_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<View
android:id="@+id/underline_hack"
android:background="#ffffff"
app:layout_constraintTop_toBottomOf="@id/actual_text"
app:layout_constraintStart_toStartOf="@id/actual_text"
app:layout_constraintEnd_toEndOf="@id/actual_text"
android:layout_width = "0dp"
android:layout_height="1.5dp"
android:layout_marginTop="2.5dp"
android:visibility="gone"/>
</androidx.constraintlayout.widget.ConstraintLayout>