MPAndroidChart:getColors()现已弃用于' Legend'。我应该用什么呢?

时间:2017-02-14 21:42:22

标签: android mpandroidchart

我在MPAndroidChart中显示PieChart的自定义图例,但现在不推荐使用.getColors()和.getLabels()。

我一直在使用它们分别得到一个int数组和字符串数组,但我似乎找不到直接替代品。我错过了一些明显的东西吗我现在应该用什么呢?谢谢!

Legend legend = mChart.getLegend();
legend.setEnabled(false);

if (legend.getColors() != null) {

    int colorCodes[] = legend.getColors();
    String labels[] = legend.getLabels();

    ArrayList<LegendItem> legendItems = new ArrayList<>();

    for (int i = 0; i < legend.getColors().length-1; i++) {
        legendItems.add(new LegendItem(colorCodes[i], labels[i]));
    }

    showLegend(legendItems);

    // entry label styling
    mChart.setDrawEntryLabels(false);

}

1 个答案:

答案 0 :(得分:2)

Legend类现在遵循更好的OOP实践,并由LegendEntry数组组成。您可以遍历每个并根据需要提取颜色或标签。

private int [] getColors(Legend legend) {
    LegendEntry [] legendEntries = legend.getEntries();
    int [] colors = new int[legendEntries.length];
    for (int i = 0; i < legendEntries.length; i++) {
        colors[i] = legendEntries[i].formColor;
    }
    return colors;
}

private String [] getLabels(Legend legend) {
    LegendEntry [] legendEntries = legend.getEntries();
    String [] labels = new String[legendEntries.length];
    for (int i = 0; i < legendEntries.length; i++) {
        labels[i] = legendEntries[i].label;
    }
    return labels;
}