2016-01-11 1 views
0

Я пытаюсь прослушивать щелчок по определенному кругу на линейной диаграмме, чтобы цвет его (щелкнутого круга) менялся при щелчке.Изменение цвета круга в линейной диаграмме с использованием mpandroid

Вот что я пробовал:

LineDataSet set1 = new LineDataSet(yVals, "DataSet 1"); 

@Override 
public void onValueSelected(Entry entry, int i) { 
    set1.setCircleColorHole(Color.GREEN); 
} 

Что сейчас происходит то, что, по щелчку, цвет все круги меняется. Что должно произойти, так это то, что только круг, который был нажат - его цвет должен измениться.

+0

у меня практически никакого представления о андроиде, но это выглядит, как вы называете 'setFillColor' для весь набор данных, а не один элемент. – kazemakase

+0

Но как установить circlecolorhole для одного объекта? –

ответ

0

В настоящее время вы устанавливаете цвет для set1, который представляет собой весь набор данных. Вот почему вы сообщаете, что меняется цвет всех кругов. Вам нужно сделать это, но для одного объекта.

В соответствии с документацией для OnChartValueSelectedListener метод onValueSelected может быть переопределен, чтобы содержать дополнительный параметр, Highlight. Отказ от ответственности Я никогда раньше не использовал эту графическую библиотеку, поэтому может потребоваться некоторое экспериментирование.

Взятые непосредственно из исходного кода chart найти здесь (линия 562 на момент написания):

https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartLib/src/com/github/mikephil/charting/charts/Chart.java

/** 
* Highlights the values represented by the provided Highlight object 
* This DOES NOT generate a callback to the OnChartValueSelectedListener. 
* 
* @param highlight contains information about which entry should be highlighted 
*/ 
public void highlightValue(Highlight highlight) { 
    highlightValue(highlight, false); 
} 

Теоретически это будет выделить выбранное значение. Другие методы, которые делают подобные вещи имеют следующие подписи:

public void highlightValue(int xIndex, int dataSetIndex)

public void highlightValues(Highlight[] highs)

public void highlightValue(Highlight high, boolean callListener)