J'ai implémenté SwipeRefreshLayout
et ViewPager
dans mon application mais il y a un gros problème: chaque fois que je vais balayer vers la gauche / droite pour basculer entre les pages, le défilement est trop sensible. Un petit glissement vers le bas déclenchera également l' SwipeRefreshLayout
actualisation.
Je souhaite définir une limite au début du balayage horizontal, puis forcer l'horizontale uniquement jusqu'à ce que le balayage soit terminé. En d'autres termes, je souhaite annuler le balayage vertical lorsque le doigt se déplace horizontalement.
Ce problème ne se produit que ViewPager
si je glisse vers le bas et que la SwipeRefreshLayout
fonction d'actualisation est déclenchée (la barre est affichée) et que je déplace mon doigt horizontalement, cela ne permet toujours que les balayages verticaux.
J'ai essayé d'étendre la ViewPager
classe mais cela ne fonctionne pas du tout:
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;
}
}
Mise en page 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>
toute aide serait appréciée Merci
SwipeRefreshLayout
?