如何设置饼图的标签颜色?

时间:2018-08-24 06:48:31

标签: android mpandroidchart

我正在使用mpandroidchart库来创建饼图。

我想设置饼图上的文本标签格式,但是我不知道该怎么做。我尝试使用

data.setValueTextColor(ContextCompat.getColor(getActivity(),R.color.black));

但是,它仅更改数据值,而不更改标签。 另外,我想成为饼图中的标签,我还尝试使用以下代码,

PieEntry entry2=new PieEntry(50-scratches,"Remaining \nScratches");

但是,它没有用。

我的代码如下:

private void setPiechart(float scratches) {

    List<PieEntry> values = new ArrayList<>();

    PieEntry entry1=new PieEntry(scratches,"Scratches");
    PieEntry entry2=new PieEntry(50-scratches,"Remaining \nScratches");

    values.add(entry1);
    values.add(entry2);

    PieDataSet dataSet = new PieDataSet(values,"");

    dataSet.setColors(ContextCompat.getColor(getActivity(),R.color.color_veridoc_gradient1),
            ContextCompat.getColor(getActivity(),R.color.colorBgChat));

    dataSet.setHighlightEnabled(true);
    dataSet.setAutomaticallyDisableSliceSpacing(true);

    dataSet.setSliceSpace(10);

    PieData data=new PieData(dataSet);
    data.setValueTextSize(20f);
    data.setValueTextColor(ContextCompat.getColor(getActivity(),R.color.black));


    pieChart.setData(data);
    Description description=new Description();
    description.setText("Scratches ");
    pieChart.setDescription(description);
    pieChart.setDrawHoleEnabled(true);
    pieChart.setHoleRadius(10f);

    pieChart.animateY(500);

    Legend legend = pieChart.getLegend();
    legend.setEnabled(true);

    legend.setTextColor(Color.BLACK);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        pieChart.setElevation(10);
    }

}

我得到的结果是: enter image description here

我想做的就是概括

  
      
  1. 更改饼图中的标签颜色(从白色更改为黑色)
  2.   
  3. 防止标签越过饼形图。 (例如,图片中所示的剩余划痕)
  4.   

有人可以帮我吗?

我还尝试了以下链接中提到的这些解决方案。

link 1 link 2

但它们似乎都不起作用。

2 个答案:

答案 0 :(得分:2)

使用

   pieChart.setEntryLabelColor(Color.BLACK);

答案 1 :(得分:1)

要更改饼图中的标签颜色,请使用以下代码:

pieChart.setEntryLabelColor(Color.BLACK);
  

我假设pieChart是XML ie 的饼图图形视图的视图。pieChart = (PieChart) findViewById(R.id.chart1);如果不是,则用pieChart替换您的视图对象< / p>

对于值文本颜色,您已经通过以下代码更改了颜色:

data.setValueTextColor(ContextCompat.getColor(getActivity(),R.color.black)); ,或者您也可以使用 data.setValueTextColor(Color.BLACK);

现在,关于两行中的显示标签文本:
我认为这是不可能的,因为图表是在画布上绘制的,并且画布不支持多线。如果要使用多行,则必须做一些技巧describe here。为此,您必须修改MPAndroidChartLibrary。

因此,您可以如下更改标签的文本大小:

pieChart.setEntryLabelTextSize(12f);  // You can increase or decrease value as per your need in argument

此外,您还可以将TypeFace(Font)应用于该标签,如下所示:

pieChart.setEntryLabelTypeface(yourTypeFace);