2012-10-22 53 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)