Eug*_*ene 57 android charsequence spannable
我将一个spannable对象分成3个部分,做不同的操作,然后我需要合并它们.
Spannable str = editText.getText();
Spannable selectionSpannable = new SpannableStringBuilder(str, selectionStart, selectionEnd);
Spannable endOfModifiedSpannable = new SpannableStringBuilder(str, selectionEnd, editText.getText().length());
Spannable beginningOfModifiedSpannable = new SpannableStringBuilder(str, 0, selectionStart);
Run Code Online (Sandbox Code Playgroud)
我该怎么做?我还没有找到所需的方法或构造函数.
xil*_*il3 140
你可以用这个:
TextUtils.concat(span1, span2);
Run Code Online (Sandbox Code Playgroud)
Eug*_*ene 20
谢谢,它的工作原理.我注意到我甚至可以合并3个spannable对象:
(Spanned) TextUtils.concat(foo, bar, baz)
Run Code Online (Sandbox Code Playgroud)
我知道这是旧的。但是在稍微修改了 kotlin stdlib 之后,我得到了这个代码:
fun <T> Iterable<T>.joinToSpannedString(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((T) -> CharSequence)? = null): SpannedString {
return joinTo(SpannableStringBuilder(), separator, prefix, postfix, limit, truncated, transform)
.let { SpannedString(it) }
}
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助某人。
使用SpannableStringBuilder
.
更好的是 - 使 kotlin 运算符重载:
operator fun Spannable.plus(other: Spannable): Spannable{
return SpannableStringBuilder(this).append(other)
}
Run Code Online (Sandbox Code Playgroud)
只需将其作为顶级函数扔到任何 kotlin 文件中即可。
并且您可以使用+
以下方法进行连接:
val spanA = ...
val spanB = ...
val concatenatedSpan = spanA + spanB
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21371 次 |
最近记录: |