0

ここに画像の説明を入力こんにちは、ユーザーが表示値の achartengine Point をクリックしたときにトーストを表示したいと思います。toScreenPoint メソッドを使用して画面位置の値を取得しようとしていますが、画面をパン (チャートを移動) した後、適切な画面ポイントを取得し、この値を Toast に設定すると、間違った値が返されます。私のコードを以下に示します。

       chart=new TimeChart(dataset, charthelper.getXYMultipleSeriesRenderer());
           graphview.setOnClickListener(new OnClickListener() { 
        @Override
        public void onClick(View v) {
            SeriesSelection ss=graphview.getCurrentSeriesAndPoint();
              if (ss == null) {
                  } else {

                double[] screenPoint = chart.toScreenPoint(new double[] {
                        ss.getXValue(),ss.getValue() },0);
                toast_textview.setText(ss.getValue()+"");
                Toast toast=new Toast(getApplicationContext());
                toast.setGravity(Gravity.TOP|Gravity.LEFT, (int)screenPoint[0],(int)screenPoint[1]);
                toast.setView(toast_layout);
                toast.show();       
                  }
                }
    });
    container_layout.addView(graphview,0);

【追記】 この方法で解決しました

 /**
     * set ontouch listener for double tap
     */
    graphview.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            x = event.getX();
            y = event.getY();
            detector.onTouchEvent(event);
            detector.setIsLongpressEnabled(true);
            return false;
        }
    });
    graphview.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            SeriesSelection ss = graphview.getCurrentSeriesAndPoint();
            if (ss == null) {
            } else {
                /**
                 * toast display only series of value which index is
                 * zero
                 */
                if (ss.getSeriesIndex() == 0) {
                    toast_textview.setText(ss.getValue() + "");
                    Toast toast = new Toast(getApplicationContext());
                    DecimalFormat formatter = new DecimalFormat("##.##");
                    toast_textview.setText(formatter.format(ss.getValue()) + "");
                    toast.setGravity(Gravity.TOP | Gravity.LEFT, (int) x,
                            (int) y);
                    toast.setView(toast_layout);
                    toast.setDuration(Toast.LENGTH_SHORT);
                    toast.show();
                }
            }
        }
    });
4

0 に答える 0