如何在Android布局xml文件中定义带下划线的文本?
当前回答
另一个解决方案是创建一个扩展TextView的自定义视图,如下所示
public class UnderLineTextView extends TextView {
public UnderLineTextView(Context context) {
super(context);
this.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);
}
public UnderLineTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
this.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);
}
}
并添加到xml,如下所示
<yourpackage.UnderLineTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="underline text"
/>
其他回答
投票最多的答案是正确和最简单的。然而,有时您可能会发现,这不是为某些字体工作,而是为其他字体工作。(这是我在处理中文时遇到的问题。)
解决方案是不要仅对TextView使用“WRAP_CONTENT”,因为没有多余的空间来绘制线条。您可以为TextView设置固定高度,或者使用android:ppaddingVertical和WRAP_CONTENT。
与Class一起尝试
对于java
textview.setPaintFlags(textview.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Kotlin的
textview.setPaintFlags(textview.getPaintFlags() or Paint.UNDERLINE_TEXT_FLAG)
HtmlCompat.fromHtml(
String.format(context.getString(R.string.set_target_with_underline)),
HtmlCompat.FROM_HTML_MODE_LEGACY)
<string name="set_target_with_underline"><u>Set Target<u> </string>
注意xml文件中的Escape符号
如果您使用的是字符串资源xml文件,该文件支持HTML标记,如<b></b>、<i></i>和<u></u>,则可以实现这一点。
<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);
上面的“接受”答案不起作用(当您尝试使用textView.setText(Html.fromHtml(string.format(getString(…),…)))这样的字符串时)。
如文档中所述,您必须用<;,例如,结果应如下所示:
<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), ...)));
推荐文章
- Android Studio, logcat在应用程序关闭后清理
- 在android中从上下文获取活动
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 按钮背景是透明的
- 在Mac OS X上哪里安装Android SDK ?
- 我如何获得图像缩放功能?
- 在Android应用程序中显示当前时间和日期
- BottomSheetDialogFragment的圆角
- 在应用程序启动时出现“无法获得BatchedBridge,请确保您的bundle被正确打包”的错误
- 我如何改变默认对话框按钮的文本颜色在安卓5
- 更改单选按钮的圆圈颜色
- 如何在android中复制一个文件?
- adb找不到我的设备/手机(MacOS X)
- 动态改变UILabel的字体大小