美文网首页Android开发
andorid的SpannableString调用setSpan

andorid的SpannableString调用setSpan

作者: Young岛主 | 来源:发表于2024-05-26 18:30 被阅读0次

Android开发中,SpannableString的setSpan(Object what,int start,int end,int flags)函数

what对象不能复用,一个对象重复使用就会失效掉上一个的赋值。例如下例,会导致第2行的setSpan失效:

1.ForegroundColorSpan foregroundColorSpan1 = new ForegroundColorSpan(mContext.getResources().getColor(R.color.dark_textview));

2.spannableString.setSpan(foregroundColorSpan1,0,ARROW_LEFT_STR_INDEX,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

3.spannableString.setSpan(foregroundColorSpan1,ARROW_LEFT_STR_INDEX +currentIndexStr.length(),spannableString.length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

解决方法:

1.使用临时变量

spannableString.setSpan(new ForegroundColorSpan(mContext.getResources().getColor(R.color.dark_textview)),0,ARROW_LEFT_STR_INDEX,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

spannableString.setSpan(new ForegroundColorSpan(mContext.getResources().getColor(R.color.minor_textview)),ARROW_LEFT_STR_INDEX +currentIndexStr.length(),spannableString.length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

spannableString.setSpan(new ForegroundColorSpan(mContext.getResources().getColor(R.color.dark_textview)),spannableString.length() -ARROW_RIGHT_STR_INDEX,spannableString.length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

2.重复定义局部变量:

ForegroundColorSpan foregroundColorSpan1 = new ForegroundColorSpan(mContext.getResources().getColor(R.color.dark_textview));

ForegroundColorSpan foregroundColorSpan2 = new ForegroundColorSpan(mContext.getResources().getColor(R.color.minor_textview))

ForegroundColorSpan foregroundColorSpan3 = new ForegroundColorSpan(mContext.getResources().getColor(R.color.dark_textview))

spannableString.setSpan(foregroundColorSpan1,0,ARROW_LEFT_STR_INDEX,Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

spannableString.setSpan(foregroundColorSpan2,ARROW_LEFT_STR_INDEX +currentIndexStr.length(),spannableString.length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

spannableString.setSpan(foregroundColorSpan3,spannableString.length() -ARROW_RIGHT_STR_INDEX,spannableString.length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

相关文章

网友评论

    本文标题:andorid的SpannableString调用setSpan

    本文链接:https://www.haomeiwen.com/subject/rnoqqjtx.html