7

我正在开发一个 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;
        }
    });

亲切的问候克里斯蒂安

4

2 回答 2

2

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

mRenderer.setClickEnabled(true);

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

于 2012-10-22T19:59:43.657 回答
0

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

mRenderer.setOnClickable(false)
于 2015-07-30T01:44:10.117 回答