Android - 在ScrollView中包含时,MPAndroidChart中的拖动无响应

Rut*_*dla 6 android scrollview mpandroidchart

我有一个ScrollView中包含的LineChart.当图表足够长以使用户无需滚动以完整地查看它时,拖动功能就会变得无法响应.拖动手势仅在我在图表边界中将手指按住一小段时间时才会记录,然后拖动.

我已经尝试使用requestDisallowInterceptTouchEvent方法,该方法应该阻止图表的父母拦截触摸事件(但这并没有解决任何问题).我也尝试直接将ScrollView注册的MotionEvents直接传递给图表/翻译拖动手势来翻译Y调用,但这并没有达到我想象的效果.

注意:缩放继续完美运行.

此外,当图形适合原始窗口或放置在任何不是ScrollView的视图中时,这不是问题.我考虑过摆脱ScrollView,但这是我项目中非常必要的功能.

关于为什么会发生这种情况的任何想法将不胜感激!

编辑:LineChart具有固定的高度

Rua*_*pes 4

这个问题有点老了,但我最近遇到了同样的问题,为了解决它,我做了以下事情。

  1. 在 xml 上的图表上添加了透明视图。
  2. 在视图上设置 setOnTouchListener

前任。

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

            return onTouchActionHandler(v, event);

            }
        });
Run Code Online (Sandbox Code Playgroud)
  1. 在 MotionEvent Action Down 上,我将 requestDisallowInterceptTouchEvent 设置为 true 并返回 false,因此该事件不会被消耗,因此当用户按下图形上的透明图像时 requestDisallowInterceptTouchEvent 将为 true 并且它将禁用触摸事件滚动视图将禁用滚动,当您释放触摸时,滚动视图将再次正常工作。

前任。

 protected boolean onTouchActionHandler(View v, MotionEvent event){

    int action = event.getAction();
    switch (action) {
        case MotionEvent.ACTION_DOWN:
            // Disallow RecyclerView to intercept touch events.
            scrollView.requestDisallowInterceptTouchEvent(true);
            Log.e(TAG, "onTouchActionHandler: ACTION_DOWN" );
            // Disable touch on transparent view
            return false;
        default:
            return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

*** 您可以在 setOntouchListener 上执行所有操作,但就我而言,我需要重用 requestDisallowInterceptTouchEvent。