android achartengine - 如何识别条形图中触摸的栏?

时间:2012-10-22 12:21:06

标签: android achartengine

我正在使用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;
        }
    });
亲切的问候 基督教

2 个答案:

答案 0 :(得分:2)

它应该与触摸侦听器一起使用。但是,您仍然必须这样做:

mRenderer.setClickEnabled(true);

AChartEngine在内部使用onTouchEvent,因此可能在ACE之后调用触摸事件,因此这可能是导致无法获得预期值的原因。

答案 1 :(得分:0)

当您想要触摸并长按时,您需要设置:

mRenderer.setOnClickable(false)