最近用MPAndroidChart做饼图的时候要求在饼图中间添加对应的文字,且文字要不同大小和不同颜色。
本来是想直接用FrameLayout,然后在图标上面加TextView。虽然知道MPAndroidChart的PieChart自带添加中间文字的方法,但是只能添加一个,所以就想偷懒用前面说的TextView,不过后来由于TextView和饼图不是一个整体,如果饼图可以滑动就会导致在滑动过程中图和文字分离。
为了解决文字分离的问题,最终还是决定使用PieChart自带的方法,为了做到需求的多颜色,不同文字大小不同的要求,可以使用SpannableStringBuilder,下面就是代码:
... ...
String up = "极好的";
Stringdown="57.4";
SpannableStringBuilderbuilder=newSpannableStringBuilder(up);
builder.setSpan(new ForegroundColorSpan(mContext.getResources().getColor(R.color.blue, null)), 0, up.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
builder.setSpan(new AbsoluteSizeSpan(80, true), 0, up.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
builder.append("\n");
builder.append(down);
builder.setSpan(newForegroundColorSpan(mContext.getColor(R.color.red)),0,down.length(),Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
builder.setSpan(newAbsoluteSizeSpan(36,true),0,down.length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
//最后记得将设置好的SpannableStringBuilder塞入PieChart
pieChart.setCenterText(builder);
... ...
,