7

Iam は 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 に答える