使用SpanningString时获得额外空间

时间:2015-04-14 19:16:52

标签: android android-custom-view spannablestring

我正在创建一个CustomView。我需要一个字符串作为一个spannable字符串,以更改字符串的一部分的颜色。代码编译,但字符串和要着色的部分之间有一个很长的空格。

以下是代码:

String string = mStat1 + "" + mStatValue1;
SpannableString spannableString = new SpannableString(string);
if(mStatValue1<=0) {
     spannableString.setSpan(new ForegroundColorSpan(Color.rgb(183,108,100)), mStat1.length(), string.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
else {
    spannableString.setSpan(new ForegroundColorSpan(Color.rgb(117,205,132)), mStat1.length(), string.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
TextPaint textPaint = createTextPaint(mTextColor, mStatSize, Paint.Align.CENTER);
mDynamicLayout = new DynamicLayout(spannableString, textPaint, mWidthPix/2, Layout.Alignment.ALIGN_NORMAL, 0.0f, 0.0f, false);

以下是我得到的视图图片:

enter image description here

我需要删除字符串的彩色部分和剩余字符串之间的间隙。感谢。

1 个答案:

答案 0 :(得分:0)

我认为你的问题与这一行有关:

TextPaint textPaint = createTextPaint(mTextColor, mStatSize, Paint.Align.CENTER);
mDynamicLayout = new DynamicLayout(spannableString, textPaint, mWidthPix/2, Layout.Alignment.ALIGN_NORMAL, 0.0f, 0.0f, false);

您只是更改了文字的颜色,因此您可以使用方法TextView#setTextColor(int color);使用两个单独的TextView视图。