2016-01-11 6 views
1

Я успешно выполнил YouTube tutorial, чтобы нарисовать PieChart в моем приложении, используя MPAndroidChart, давая каждому кусочку пирога собственный цвет. Я создал OnChartValueSelectedListener, так что я могу знать, какой кусок пирога был нажаты пользователем, как в следующем:MPAndroidChart Изменение цвета среза после нажатия

public class MyActivity implements OnChartValueSelectedListener { 
    @Override 
    public void onNothingSelected() { 
     // do stuff 
    } 

    @Override 
    public void onValueSelected(Entry e, int dataSetIndex, Highlight h){ 
     Log.i("I clicked on", String.valueOf(e.getXIndex())); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     ... 
     (PieChart)chart = (PieChart) findViewById(R.id.chart); 
     ... 
     chart.setOnChartValueSelectedListener(this); 
    } 
} 

Но даже зная, какая секция была нажата, я, кажется, не чтобы найти способ изменить свой цвет.

Официальный документ (https://github.com/PhilJay/MPAndroidChart/wiki/Setting-Colors) дает нам способ определения и изменения цветов, но только для набора данных, и кажется, что у PieChart только один набор данных, поэтому, если я изменил цвет набора данных, все остальные нарезанные будут видеть, что их цвет меняется.

Итак, я хочу знать, если есть способ, в следующем слушателю

public void onValueSelected(Entry e, int dataSetIndex, Highlight h) 

изменить цвет среза, который был щелкнули? Это проблема, с которой вы столкнулись?

ответ

0

Это довольно просто.

Только замените значение цвета, которое вы установили для DataSet объект с новым.

// get the color(s) you provided for the chart 
List<Integer> colors = chart.getData().getDataSetByIndex(dataSetIndex).getColors(); 

int newcolor = Color.RED; 
colors.set(e.getXIndex(), newcolor); // replace the color at the specified index 
chart.invalidate(); // refresh 
Смежные вопросы