He implementado SwipeRefreshLayout
y ViewPager
en mi aplicación, pero hay un gran problema: cada vez que voy a deslizar el dedo hacia la izquierda / derecha para cambiar entre páginas, el desplazamiento es demasiado sensible. Un pequeño deslizamiento hacia abajo también activará la SwipeRefreshLayout
actualización.
Quiero establecer un límite para cuando comience el deslizamiento horizontal, luego forzar horizontalmente solo hasta que termine el deslizamiento. En otras palabras, quiero cancelar el deslizamiento vertical cuando el dedo se mueve horizontalmente.
Este problema solo ocurre en ViewPager
, si deslizo hacia abajo y SwipeRefreshLayout
se activa la función de actualización (se muestra la barra) y luego muevo mi dedo horizontalmente, todavía solo permite deslizamientos verticales.
Intenté extender la ViewPager
clase pero no funciona en absoluto:
public class CustomViewPager extends ViewPager {
public CustomViewPager(Context ctx, AttributeSet attrs) {
super(ctx, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
boolean in = super.onInterceptTouchEvent(ev);
if (in) {
getParent().requestDisallowInterceptTouchEvent(true);
this.requestDisallowInterceptTouchEvent(true);
}
return false;
}
}
Diseño xml:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/viewTopic"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.myapp.listloader.foundation.CustomViewPager
android:id="@+id/topicViewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
Cualquier ayuda será apreciada, gracias
SwipeRefreshLayout
?