如何在ScrollView中显示特定视图时停止滚动ScrollView?

时间:2015-06-19 05:43:04

标签: android

如何在ScrollView中显示特定视图时停止滚动ScrollView?

         .....
         View2
----------------------------------
|                                |
|        View3                   |
|                                |
|                                |
|        View4                   |
|                                |
|                                | <------ It's Screen 
|        View5                   |
|                                |
|                                |
|        View6                   |
|                                |
|                                |
|        View7                   |
|                                |
|                                |
|        View8                   |
|                                |
|                                |
|        View9                   |
----------------------------------

         View10
         ......

如何显示View9并停止滚动的时刻。

1 个答案:

答案 0 :(得分:0)

我从来没有这样做,但这就是我要做的。

首先,您需要检测View9何时被显示和可见。所以我会用这样的东西

Rect scrollBounds = new Rect();
scrollView.getHitRect(scrollBounds);
if (imageView.getLocalVisibleRect(scrollBounds)) {
    // imageView is within the visible window
} else {
    // imageView is not within the visible window
} 

(来自https://stackoverflow.com/a/12428208/3187128

尝试每X秒执行一次以测试代码。

然后,如果你想要更干净的东西,你应该使用scrollListener:

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

    }
});

(来自https://stackoverflow.com/a/23365539/3187128

最后一步是实现自定义滚动视图,以便能够禁用滚动:

cf https://stackoverflow.com/a/5763815/3187128

希望这会有所帮助:)