我可以onScrollListener了滚动型?onScrollListener

2023-09-11 12:19:06 作者:岁梦半尺见

我在布局中使用 Horizo​​ntalScrollView ,我需要识别用户已经达到滚动的起点和终点。

I am using a HorizontalScrollView in a layout and I need to identify the user have reached the start and end point of the scroll.

有关的ListView 我已经尝试了在 onScrollListener 键,就可以找到卷轴的起点和终点

For ListView I have tried a the onScrollListener and it is possible to find the start and end point of scroll.

我想在我的滚动型做同样的,但它似乎是不可能的。有没有达到我所需要的任何其他可能的方式。

I tried to do the same in my Scrollview but it seems not possible. Is there any other possible ways to achieve what I need.

在此先感谢。

推荐答案

这是相当晚,但有人可能会发现它很有用。 考虑每一个实例得到调用getViewTreeObserver()函数。现在当Holdind ViewTreeObserver的一个实例,你可以使用函数addOnScrollChangedListener给它添加一个OnScrollChangedListener()。 你可以看到在http://developer.android.com/reference/android/view/ViewTreeObserver.html

it's quite late but someone might find it useful. every instance of view get call the getViewTreeObserver() function. now when Holdind an instance of ViewTreeObserver you can add to it a OnScrollChangedListener using the function addOnScrollChangedListener(). You can see more information about this class at http://developer.android.com/reference/android/view/ViewTreeObserver.html

它可以让你知道每一个滚动的事件 - 但没有坐标。您可以通过从侦听器内使用getScrollY()或getScrollX()得到它们。

It lets you know of every scrolling event - but without the coordinates. You can get them by using getScrollY() or getScrollX() from within the listener.

scrollView.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener() {

    @Override
    public void onScrollChanged() {

        int scrollX = rootScrollView.getScrollX(); //for horizontalScrollView
        int scrollY = rootScrollView.getScrollY(); //for verticalScrollView
        //DO SOMETHING WITH THE SCROLL COORDINATES

    }
});