项目:revolution-irc
文件:ServerConnectionInfo.java
public void addHistoryMessage(CharSequence msg) {
SpannableString str = new SpannableString(msg);
for (Object o : str.getSpans(0,str.length(),NocopySpan.class))
str.removeSpan(o);
mSentMessageHistory.add(str);
if (mSentMessageHistory.size() >= HISTORY_MAX_COUNT)
mSentMessageHistory.remove(0);
}
项目:JotaTextEditor
文件:SpannableStringBuilder.java
/**
* Create a new SpannableStringBuilder containing a copy of the
* specified slice of the specified text,including its spans if any.
*/
public SpannableStringBuilder(CharSequence text,int start,int end) {
int srclen = end - start;
int len = ArrayUtils.idealChararraySize(srclen + 1);
mText = new char[len];
mGapStart = srclen;
mGapLength = len - srclen;
TextUtils.getChars(text,start,end,mText,0);
mSpanCount = 0;
int alloc = ArrayUtils.idealIntArraySize(0);
mSpans = new Object[alloc];
mSpanStarts = new int[alloc];
mSpanEnds = new int[alloc];
mSpanFlags = new int[alloc];
if (text instanceof Spanned) {
Spanned sp = (Spanned) text;
Object[] spans = sp.getSpans(start,Object.class);
for (int i = 0; i < spans.length; i++) {
if (spans[i] instanceof NocopySpan) {
continue;
}
int st = sp.getSpanStart(spans[i]) - start;
int en = sp.getSpanEnd(spans[i]) - start;
int fl = sp.getSpanFlags(spans[i]);
if (st < 0)
st = 0;
if (st > end - start)
st = end - start;
if (en < 0)
en = 0;
if (en > end - start)
en = end - start;
if ( st <= en ) {
setSpan(spans[i],st,en,fl);
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。