Android scrollview onScrollChanged
J'ai un fixe contenu dans le texte que j'ai vue à l'intérieur d'un défilement de l'affichage. Lorsque l'utilisateur fait défiler jusqu'à une certaine position, je voudrais commencer une activité ou déclencher une Toast
.
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:id="@+id/scroller">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent" android:id="@+id/story"
android:layout_height="wrap_content" android:text="@string/lorem"
android:gravity="fill" />
</LinearLayout>
</ScrollView>
Mon problème est dans l'application de la méthode protégée onScrollChanged
pour retrouver la position de défilement de la vue.
J'ai trouvé cette réponse, est-il une solution plus facile plutôt que de déclarer une interface, plus de ride de la scrollview etc comme on le voit sur le lien que j'ai posté?
- vous pouvez utiliser ce stackoverflow.com/questions/10316743/detect-end-of-scrollview
Vous devez vous connecter pour publier un commentaire.
Pas.
ScrollView ne fournit pas un écouteur d'événements de défilement ou même un moyen de vérifier dans quelle mesure l'utilisateur dispose d'un défilement, de sorte que vous avez à faire ce qui est suggéré par le lien.
onScrollChangeListener
, qui est super gênant. Voici quelques suggestions de quelqu'un trébuche sur ce problème: stackoverflow.com/questions/8181828/...Il y a un moyen beaucoup plus facile que de dérivation de l'
ScrollView
. LeViewTreeObserver
objet de laScrollView
peut être utilisé pour écouter des parchemins.Depuis le
ViewTreeObserver
objet peut changer au cours de la durée de vie de laScrollView
, nous avons besoin d'enregistrer unOnTouchListener
sur leScrollView
pour obtenirViewTreeObserver
au moment de défilement.ScrollView
. C'est en fait plus de code. Si vous sous-classe, vous pouvez simplement remplacer leonScrollChanged
méthode.scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { @Override public void onScrollChanged() { //do stuff }});
. PAS À L'INTÉRIEUR SUR LA TOUCHE DE LA MÉTHODEOnTouchListener
parce que le documentation dit "Le retour de l'ViewTreeObserver observateur n'est pas garantie reste valide pour la durée de vie de ce point de Vue". J'ai édité la réponse de sorte que si leViewTreeObserver
n'est pas la plus vivante, la fonction de rappel est supprimé et ajouté àView
actuelViewtreeObserver
.Cette question est assez vieux, mais dans le cas où quelqu'un descend (comme moi):
De départ avec API 23, Android
View
a unOnScrollChangeListener
et la correspondance setter.La NestedScrollView à partir de la bibliothèque de prise en charge prend également en charge la fixation d'un défilement de l'auditeur avant même que l'API de niveau. Autant que je sache,
NestedScrollView
peut être utilisé comme un remplacement pour le normalScrollView
sans aucun problème.NestedScrollView
dans le Soutien lib, vous csn utilisation que l'insead de l'ordinaireScrollview
sans problèmesFait il y a un moyen de savoir dans quelle mesure l'utilisateur dispose d'un défilement. La méthode getScrollY() à partir de ScrollView vous dit que.
ScrollView
mais pas unListView
ou unGridView
.J'ai étendu ma scrollView. Ce lien peut aider.
NestedScrollView est tout comme android.widget de.Le ScrollView, mais il prend en charge agissant à la fois comme un imbriquée défilement de la mère et de l'enfant, tant sur les nouvelles et les anciennes versions d'Android.
1er - Utilisation NestedScrollView plutôt la liaison ScrollView
2e - Set de Défilement à l'écoute, comme ça, pour détecter le déplacement de l'axe Y pour un headerView par exemple
Il est prêt pour l'utilisation, ce qui contribue à écouter pour faire défiler les événements de l'arbitraire des points de vue dans Android. En interne, ce composant ajoute ViewTreeObserver de défilement écouteur d'événements pour les appareils avec la vieille API Android (similaire comme proposé dans Shubhadeep Chaudhuri de réponse et de voir défiler les événements de l'auditeur sur les appareils avec Android nouvelle API (API level 23+).
Suffit d'utiliser
NestedScroll
etNestedScroll.setOnScrollChangeListener()
.À partir de l'API 23 Android M, vous pouvez utiliser OnScrollChangeListener.
vous pouvez utiliser cette déclencheur pour afficher des Toasts ou de Démarrer une Activité