Android: arrastrar en MPAndroidChart no responde cuando está contenido en ScrollView

Tengo un LineChart contenido dentro de un ScrollView. Cuando el gráfico es lo suficientemente largo como para que sea necesario que un usuario se desplace para verlo en su totalidad, las funciones de arrastrar no responden. Los gestos de arrastrar solo se registran cuando mantengo el dedo abajo durante un corto período de tiempo en los límites del gráfico y luego arrastra.

He intentado usar el método de requestDisallowInterceptTouchEvent que debe evitar que los padres de la carta intercepten los acontecimientos del tacto (pero esto no soluciona cualquier cosa). También he intentado pasar directamente MotionEvents registrado por el ScrollView directamente a la carta / traducir gestos de arrastre para traducir llamadas, pero esto no hace lo que yo pensaba que sería.

Nota: El zoom sigue funcionando perfectamente.

Además, esto no es un problema cuando el gráfico encaja en la ventana original o cuando se coloca en cualquier vista que no sea ScrollView. He considerado deshacerse de ScrollView pero es una característica bastante necesaria en mi proyecto.

¡Cualquier idea sobre porqué esto podría estar sucediendo sería apreciada!

Edit: el LineChart tiene una altura fija

Esta pregunta es un poco antigua, pero me encontré con el mismo problema recientemente y para resolverlo, hice lo siguiente.

  1. Se agregó una vista transparente sobre el gráfico en el xml.
  2. Establecer setOnTouchListener en la vista

ex.

clickInterceptorGraph.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return onTouchActionHandler(v, event); } }); 
  1. En la acción de MotionEvent Abajo, estoy configurando requestDisallowInterceptTouchEvent a true y devuelve false para que el evento no se consuma, por lo que mientras el usuario está presionando sobre la imagen transparente sobre el gráfico requestDisallowInterceptTouchEvent será true y desactivará el evento Touch en La vista de desplazamiento que deshabilitará el desplazamiento y cuando suelte el tacto, la vista de desplazamiento funcionará normalmente de nuevo.

ex.

  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; } } 

*** Usted podría hacer todo en el setOntouchListener pero en mi caso necesito reutilizar el requestDisallowInterceptTouchEvent.

  • Horizontal RecyclerView interior vertical ScrollView
  • Sincronizar la posición de desplazamiento de ScrollView en todos los fragmentos dentro de ViewPager
  • ScrollView: Cambia el color del efecto de borde con Holo
  • El fondo no aparece en android 4.2.2, pero aparece en 2.3
  • ScrollView dentro de la Galería, desplazándose independientemente
  • Android: especifica la altura y el ancho de ScrollView
  • Android: crea un LinearLayout que contiene un ListView desplazable
  • Hacer scrollbars flash de código (como iOS flashScrollIndicators)
  • Cómo cambiar el color de la actual desplazamiento en ScrollView Android?
  • ¿Por qué desaparecen los elementos cuando se desplaza el listView?
  • ¿Hay una manera de desplazarse mediante programación una vista de desplazamiento a un texto de edición específico?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.