目前我使用GITHUB的MPAndroidChart并绘制饼图以显示两行文本,每行有不同的颜色和不同的字体大小,我检查源代码,中心文本是一个字符串对象,并尝试使用:
PAINT paint = pie_chart.getPaint(Chart.PAINT_CENTER_TEXT);
但看起来不起作用,有人有经验去做并指导我。
答案 0 :(得分:4)
在研究了源代码之后,我改变了PieChartRenderer.java来改变它
mCenterTextPaint.setColor(Color.parseColor("#333333"));
mCenterTextPaint.setTextSize(Utils.convertDpToPixel(20f));
mCenterTextPaint.setTextAlign(Align.CENTER);
然后使用“\ n”作为分割来获取第一行
int index = centerText.indexOf("\n");
Spannable tempSpannable = new SpannableString(centerText);
tempSpannable.setSpan(new RelativeSizeSpan(0.75f), 0, index, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tempSpannable.setSpan(new ForegroundColorSpan(Color.parseColor("#999999")),
0, index, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// If width is 0, it will crash. Always have a minimum of 1
mCenterTextLayout = new StaticLayout(tempSpannable, 0, centerText.length(),
mCenterTextPaint,
(int)Math.max(Math.ceil(mCenterTextLastBounds.width()), 1.f),
Layout.Alignment.ALIGN_NORMAL, 1.f, 0.f, false);
然后得到我想要的东西
答案 1 :(得分:1)
PieData data = new PieData(dataSet);
pieChart.setCenterText("Total Questions 5" );
pieChart.setCenterTextSize(14f);
pieChart.setCenterTextColor(Color.BLUE);
答案 2 :(得分:0)
您可以通过在活动布局中将com.github.mikephil.charting.charts.PieChart组件和中心文本嵌套在RelativeLayout中来修改MPAndroidChart源,从而实现此目的。您可以使用LinearLayout组件格式化中心文本行。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
>
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/pieChart"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.github.mikephil.charting.charts.PieChart>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/pieChartMonthlyAverage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/ChartStat"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/ChartStatLabel"
android:text="@string/charts.label.average"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/ChartStatLabel"
android:layout_marginTop="-4dp"
android:text="@string/charts.label.monthly"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/ChartStatLabel"
android:layout_marginTop="-4dp"
android:text="@string/charts.label.bill"/>
</LinearLayout>
</RelativeLayout>
小心将包含中心文字的LinearLayout放在下面的PieChart组件中。这是最终结果。
答案 3 :(得分:0)
在图表上使用public void setCenterText(CharSequence text)
,并传递SpannableString
作为其参数。根据您的内心需求调整SpannableString的风格。