0

我制作了一个简单的图表并添加了一个 onTouchListener,如下所示:

    @Override
    public boolean onTouch(View arg0, MotionEvent event) {

    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        if (mGraphPopup.isShowing()) {
            //close popup window
        } else {
            SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
            if (seriesSelection != null) {
              // open popupwindow
            }
        }
    return false;
}

我期望这样的表现:

1) 点击图表点 - 显示弹出窗口

2)在任何地方再次点击 - 关闭弹出窗口

但真正发生了什么:

1*) 点击图表点:没有任何反应 - 因为 seriesSelection 为空

2*) 再次点击远离任何图表点 - seriesSelection 有效并加载第 1 步单击的点的数据*)

一键式事件看起来图表迟到了。

我什至尝试调用 getCurrentSeriesAndPoint() 两次:D 但没有结果。

4

2 回答 2

1

我最近也遇到了这个问题,我找到了解决方案。也许你已经解决了这个问题,我也回答它以帮助将来遇到问题的其他人。这是解决方案:

       paintBarView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            paintBarView.onTouchEvent(event);

这是代码很重要`paintBarView.onTouchEvent(event); 这段代码是为了确保视图得到你的输入,你也可以像这样解决它:

try {
                                Field fieldX = paintBarView.getClass().getDeclaredField("oldX");
                                Field fieldY = paintBarView.getClass().getDeclaredField("oldY");
                                fieldX.setAccessible(true);
                                fieldY.setAccessible(true);
                                fieldX.set(paintBarView, event.getX());
                                fieldY.set(paintBarView, event.getY());
                            } catch (NoSuchFieldException e) {
                                e.printStackTrace();
                            } catch (IllegalAccessException e) {
                                e.printStackTrace();
                            } catch (SecurityException e) {
                                e.printStackTrace();
                            } catch (IllegalArgumentException e) {
                                e.printStackTrace();
                            }
                            SeriesSelection ss  =   paintBarView.getCurrentSeriesAndPoint();

这两个解决方案来解决它,希望可以帮助别人

于 2015-08-17T02:47:47.153 回答
0

为了侦听图表上的事件并检索点击信息,我建议您setOnClickListenerchartView. 一个很好的例子就是这个

于 2013-06-04T09:09:58.533 回答