如何检查 CharSequence 是否包含某种样式的跨度?
How to check if CharSequence contains a span of certain style?
我有一个 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
基本上让你得到 class 的所有跨度实例,你可以迭代它并使用一些东西来匹配,在这种情况下 StyleSpan
有一个 style
是一个 id。
我有一个 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
基本上让你得到 class 的所有跨度实例,你可以迭代它并使用一些东西来匹配,在这种情况下 StyleSpan
有一个 style
是一个 id。