问题描述
我有一个 editText,需要检查所选文本是否具有某种样式。例如:
fun isOfStyle(text: CharSequence,charStyle: StyleSpan){
...
}
fun doStuff(){
if isOfStyle(selectedText(),StyleSpan(Typeface.BOLD)){
...
}
}
检查这个的正确方法是什么?
解决方法
首先你必须遍历一个spannable,所以让你的文本成为spannable
val spannableString = editText.text.toString() as? SpannableStringBuilder
如果您的文本不可转换,则表示尚未设置跨度,因此您可能还想验证 null
fun isOfStyle(spannable: Spannable,charStyle: StyleSpan){
spannable.getSpans(0,spannable.length,StyleSpan::class.java).filter {
it.style == charStyle.style
}
//do something with your finding
}
所以 getSpans
基本上为您提供了该类的所有 span 实例,您可以对其进行迭代并使用某些内容进行匹配,在这种情况下,StyleSpan
有一个 style
那是一个 ID。