我正在使用Android应用程序并使用AChartEngine进行条形图。 除了我无法弄清楚图表中的哪个条形图被触摸(未点击)之外,一切都正常工作。似乎.getCurrentSeriesAndPoint()在OnTouchListener中不起作用。它每次都返回NULL。 当我使用OnClickListener时,一切正常,但我需要知道哪个栏被触摸(Action_Down和Action_Up)没有点击。
.getCurrentSeriesAndPoint()一般不在TouchListener中工作吗?是否有解决方法或其他方式来实现触摸哪个栏?
mChartView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:{
Toast.makeText(MainActivity.this, "DOWN", Toast.LENGTH_SHORT) .show();
if(seriesSelection != null) touchedBar = seriesSelection.getPointIndex();
break;}
case MotionEvent.ACTION_UP:{
Toast.makeText(MainActivity.this, "UP", Toast.LENGTH_LONG) .show();
touchedBar = 0;
break;}
default: break;
}
mRenderer.removeAllRenderers();
r.setColor(Color.RED);
r.setSelectedBar(ClickedBar);
mRenderer.addSeriesRenderer(r);
mChartView.repaint();
return true;
}
});
亲切的问候
基督教
答案 0 :(得分:2)
它应该与触摸侦听器一起使用。但是,您仍然必须这样做:
mRenderer.setClickEnabled(true);
AChartEngine在内部使用onTouchEvent,因此可能在ACE之后调用触摸事件,因此这可能是导致无法获得预期值的原因。
答案 1 :(得分:0)
当您想要触摸并长按时,您需要设置:
mRenderer.setOnClickable(false)