代码之家  ›  专栏  ›  技术社区  ›  Riddhi

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

  •  1
  • Riddhi  · 技术社区  · 8 年前

    我在用 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. 防止标签超出饼图范围。(如图所示的剩余划痕)

    有人能帮我吗?

    link 1 link 2

    但它们似乎都不起作用。

    2 回复  |  直到 8 年前
        1
  •  5
  •   user7176550    8 年前

    使用

       pieChart.setEntryLabelColor(Color.BLACK);
    
        2
  •  3
  •   Viraj Patel    8 年前

    pieChart.setEntryLabelColor(Color.BLACK);
    

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

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

    现在,关于两行中的显示标签文本:
    我认为不可能这样做,因为图表是在画布上绘制的,画布不支持多行。如果你想要多行,你必须做一些技巧 describe here

    因此,作为替代方案,可以按如下所示更改标签的文本大小:

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

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

    pieChart.setEntryLabelTypeface(yourTypeFace);