我的问题是我设置了Chart.setOnChartValueSelectedListener但是当我点击值时没有任何动作。
我的代码是:
chart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
dataSets.get(dataSetIndex).setCircleColor(getResources().getColor(R.color.white));
dataSets.get(dataSetIndex).setCircleColorHole(getResources().getColor(R.color.lavender_indigo));
}
@Override
public void onNothingSelected() {
dataSets.get(0).setCircleColor(getResources().getColor(R.color.gorse));
dataSets.get(0).setCircleColorHole(getResources().getColor(R.color.gorse));
}
});
图片不是来自app。只是设计部分。我想这样做。
答案 0 :(得分:0)
很难从你提供的代码中看出来但我在调用chart.setHighlightPerTapEnabled(false)
如果第一眼看不清setHighlightPerTapEnabled
方法也会禁用OnChartValueSelectedListener
我的解决方案是用OnChartValueSelectedListener
替换OnChartGestureListener
。以下是我实施的内容片段:
private class BarChartGestureListener implements OnChartGestureListener {
private int _lastTappedIndex = -1;
@Override
public void onChartGestureStart(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
}
@Override
public void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
}
@Override
public void onChartLongPressed(MotionEvent me) {
}
@Override
public void onChartDoubleTapped(MotionEvent me) {
}
@Override
public void onChartSingleTapped(MotionEvent me) {
final Entry entry = _barChart.getEntryByTouchPoint(me.getX(), me.getY());
if (entry != null && _lastTappedIndex != entry.getXIndex()) {
final Object data = entry.getData();
if (Summary.class.isInstance(data)) {
final Calendar calendar = DateUtils.newCalendar(((Summary) data).getDate());
_spinnerMonth.setSelection(calendar.get(Calendar.MONTH));
}
}
}
@Override
public void onChartFling(MotionEvent me1, MotionEvent me2, float velocityX, float velocityY) {
}
@Override
public void onChartScale(MotionEvent me, float scaleX, float scaleY) {
}
@Override
public void onChartTranslate(MotionEvent me, float dX, float dY) {
}
}
在onChartSingleTapped
中,您可以获取被点击的Entry
,并以编程方式突出显示它或您想要的任何其他内容。