如何使用按钮单击删除 UnderlineSpan() 文本
How to remove UnderlineSpan() text using button click
我正在尝试创建一个小型记事本项目。现在我很难找到一个解决方案来删除文本上的下划线。我可以设置它,但我不能删除它。
这是我的代码:
我是这样设置的
我使用span获取选中的文本
selectedString.setSpan(UnderlineSpan(), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
这是我尝试取消设置的方法
selectedString.setSpan(UnderlineSpan().updateDrawState(TextPaint().apply { isUnderlineText = false }), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
我试图寻找解决方案,但运气不好,有人可以帮助我吗?提前致谢!
你可以像这样声明一个class
class NoUnderlineSpan : UnderlineSpan() {
override fun updateDrawState(ds: TextPaint) {
ds.color = ds.linkColor
ds.isUnderlineText = false
}
}
然后像使用 UnderlineSpan 一样使用 NoUnderlineSpan
或者你可以试试我写的这个库:SpannableStringDslExtension
如果您想删除 text
的所有样式,您可以只在 spannable
上使用 toString()
,它会删除所有内容。
如果您只想删除 spannable
的一部分的样式,只需将 UnderlineSpan
和 override
的 anonymous object
设为 updateDrawState
方法
val underlineRemoveSpan = object : UnderlineSpan() {
override fun updateDrawState(ds: TextPaint) {
ds.isUnderlineText = false
}
}
selectedString.setSpan(underlineRemoveSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
selectedString.setSpan(UnderlineSpan().updateDrawState(TextPaint().apply { isUnderlineText = false }), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
这不起作用,因为在将 isUnderlineText
设置为 false
后使用新的 TextPaint
调用 updateDrawState
。 UnderlineSpan
class 中 updateDrawState
的实现,将其设置为 true
,这就是下划线未被删除的原因。
我正在尝试创建一个小型记事本项目。现在我很难找到一个解决方案来删除文本上的下划线。我可以设置它,但我不能删除它。
这是我的代码:
我是这样设置的
我使用span获取选中的文本
selectedString.setSpan(UnderlineSpan(), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
这是我尝试取消设置的方法
selectedString.setSpan(UnderlineSpan().updateDrawState(TextPaint().apply { isUnderlineText = false }), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
我试图寻找解决方案,但运气不好,有人可以帮助我吗?提前致谢!
你可以像这样声明一个class
class NoUnderlineSpan : UnderlineSpan() {
override fun updateDrawState(ds: TextPaint) {
ds.color = ds.linkColor
ds.isUnderlineText = false
}
}
然后像使用 UnderlineSpan 一样使用 NoUnderlineSpan
或者你可以试试我写的这个库:SpannableStringDslExtension
如果您想删除 text
的所有样式,您可以只在 spannable
上使用 toString()
,它会删除所有内容。
如果您只想删除 spannable
的一部分的样式,只需将 UnderlineSpan
和 override
的 anonymous object
设为 updateDrawState
方法
val underlineRemoveSpan = object : UnderlineSpan() {
override fun updateDrawState(ds: TextPaint) {
ds.isUnderlineText = false
}
}
selectedString.setSpan(underlineRemoveSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
selectedString.setSpan(UnderlineSpan().updateDrawState(TextPaint().apply { isUnderlineText = false }), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
这不起作用,因为在将 isUnderlineText
设置为 false
后使用新的 TextPaint
调用 updateDrawState
。 UnderlineSpan
class 中 updateDrawState
的实现,将其设置为 true
,这就是下划线未被删除的原因。