【问题标题】:How to set pie chart's label color?如何设置饼图的标签颜色?
【发布时间】:2018-08-24 06:48:31
【问题描述】:

我正在使用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);
    }

}

我得到的结果是:

简而言之我想做的事

  1. 更改饼图中的标签颜色(从白色变为黑色)
  2. 防止标签超出饼图。 (例如,如图所示的剩余划痕)

谁能帮帮我?

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

link 1 link 2

但它们似乎都不起作用。

【问题讨论】:

标签: android mpandroidchart


【解决方案1】:

使用

   pieChart.setEntryLabelColor(Color.BLACK);

【讨论】:

    【解决方案2】:

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

    pieChart.setEntryLabelColor(Color.BLACK);
    

    我假设 pieChart 是您的 XML 饼图视图视图 pieChart = (PieChart) findViewById(R.id.chart1); 如果不是,则将您的视图对象替换为 pieChart

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

    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);
    

    【讨论】:

    • 感谢它很有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 2015-09-04
    • 1970-01-01
    相关资源
    最近更新 更多