2012-10-22 54 views
7

Iam在Android应用上工作并使用AChartEngine进行条形图绘制。 除了我无法确定图中哪个栏被触摸(未点击)之外,所有内容都正常工作。似乎.getCurrentSeriesAndPoint()在OnTouchListener中不起作用。它每次都返回NULL。 当我使用OnClickListener时,一切工作正常,但我需要知道没有点击触摸了哪个栏(Action_Down和Action_Up)。android achartengine - 如何识别条形图中触摸哪个栏?

.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

嗨@ChristianR你可以请张贴整个代码。 – user1844638

回答

2

应该与触摸监听工作。但是,你还是要做到这一点:

mRenderer.setClickEnabled(true); 

AChartEngine使用的onTouchEvent内部,所以它可能是你的触摸事件的ACE后再调用,所以这可能是没有得到预期值的原因。

+0

谢谢,但我已经在我的代码中早先设置了mRenderer.setClickEnabled(true)。而且它还没有与触摸监听器一起工作。我没有从.getCurrentSeriesAndPoint()获取值。 – ChristianR

+0

看到我更新的答案。 –

+2

请问该解决方法的答案是什么? –

0

当你想触摸和长按,你需要设置:

mRenderer.setOnClickable(false)