我如何在 Android 布局 xml
文件中定义 下划线 文本?
我如何在 Android 布局 xml
文件中定义 下划线 文本?
如果您正在使用支持HTML标签(如<b></b>
,<i></i>
和<u></u>
)的字符串资源XML文件,则可以实现。
<resources>
<string name="your_string_here"><![CDATA[This is an <u>underline</u>.]]></string>
</resources>
如果您想要从代码中划下划线,请使用:
TextView textView = (TextView) view.findViewById(R.id.textview);
SpannableString content = new SpannableString("Content");
content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
textView.setText(content);
<u>
标签无法实现下划线的情况,例如当你使用自定义字体时。但是,通过UnderlineSpan
编程实现下划线对我来说从未失败过,因此我建议它作为最可靠的解决方案。 - Giulio Piancastelli。
textview.setPaintFlags(textview.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
| Paint.ANTI_ALIAS_FLAG
,否则您的文本会看起来非常锐利。这种情况在较低的API中更为常见。 - Martin MarconcinitextView.paintFlags = textView.paintFlags or Paint.UNDERLINE_TEXT_FLAG
的意思是将 TextView 的下划线文本标记设置为开启状态。 - Albert Vila Calvostrings.xml文件的内容:
<resource>
<string name="my_text">This is an <u>underline</u>.</string>
</resources>
布局XML文件应使用上述字符串资源,并在TextView的以下属性中使用,如下所示:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/my_text"
android:selectAllOnFocus="false"
android:linksClickable="false"
android:autoLink="all"
/>
textView.setText(Html.fromHtml(String.format(getString(...), ...)))
这样使用字符串时)。<
转义(HTML实体编码)内部标记的左尖括号,例如结果应该如下所示:<resource>
<string name="your_string_here">This is an <u>underline</u>.</string>
</resources>
然后在您的代码中,您可以使用以下方法设置文本:
TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(String.format(getString(R.string.my_string), ...)));
对于按钮和文本视图,这是最简单的方法:
按钮:
Button button = (Button) findViewById(R.id.btton1);
button.setPaintFlags(button.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
文本视图:
TextView textView = (TextView) findViewById(R.id.textview1);
textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Kotlin中可以使用扩展函数,但只能在代码中使用,不能在XML中使用。
fun TextView.underline() {
paintFlags = paintFlags or Paint.UNDERLINE_TEXT_FLAG
}
使用方法:
tv_change_number.underline()
tv_resend_otp.underline()
myTextView.setText(Html.fromHtml("<p><u>我是下划线文本</u></p>"));
虽然有点晚,但对某些人可能仍有用。
看看带下划线的可点击按钮样式:
<TextView
android:id="@+id/btn_some_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_add_contact"
android:textAllCaps="false"
android:textColor="#57a0d4"
style="@style/Widget.AppCompat.Button.Borderless.Colored" />
strings.xml:
<string name="btn_add_contact"><u>Add new contact</u></string>
结果:
另一种更简洁的方式,可以替代使用
textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
方法,就是使用:
textView.getPaint().setUnderlineText(true);
而如果你需要在以后关闭该视图的下划线,例如在 RecyclerView 中重用视图时,可使用textView.getPaint().setUnderlineText(false);