2017-02-14 1 views
1

그러나 MPAndroidChart의 PieChart에 대한 사용자 정의 범례를 표시하고 있습니다. 그러나 .getColors() 및 .getLabels()는 향후 제공되지 않을 예정입니다.MPAndroidChart : 'Legend'에서 getColors()가 사용되지 않습니다. 대신 무엇을 사용해야합니까?

나는 그들을 각각 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); 

} 

답변

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; 
} 
+0

정확히 내가 무엇을 찾고 있었습니까? 감사! – edant92

관련 문제