[英]Android: Using a getStyle() method for underlinespan to remove the span
[英]How to remove UnderlineSpan() text using button click
我正在通過創建一個小型記事本項目來嘗試。 現在我很難找到刪除文本下划線的解決方案。 我可以設置它,但我不能刪除它。
這是我的代碼:
selectedString.setSpan(UnderlineSpan(), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
selectedString.setSpan(UnderlineSpan().updateDrawState(TextPaint().apply { isUnderlineText = false }), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
我試圖尋找解決方案,但沒有運氣有人可以幫助我嗎? 提前致謝!
你可以像這樣聲明一個類
class NoUnderlineSpan : UnderlineSpan() {
override fun updateDrawState(ds: TextPaint) {
ds.color = ds.linkColor
ds.isUnderlineText = false
}
}
然后像使用 UnderlineSpan 一樣使用 NoUnderlineSpan
或者你可以試試我寫的這個lib: SpannableStringDslExtension
如果你想刪除text
的所有樣式,你可以在spannable
上使用toString()
,它會刪除所有內容。
如果您只是想刪除spannable
的一部分的樣式,只需創建一個UnderlineSpan
的anonymous object
並override
其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
類中updateDrawState
的實現將其設置為true
,這就是下划線不刪除的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.