首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查ScrollView内部的视图是否可见?

如何检查ScrollView内部的视图是否可见?
EN

Stack Overflow用户
提问于 2011-01-08 02:14:40
回答 10查看 105K关注 0票数 190

我有一个包含一系列ViewsScrollView。我希望能够确定视图当前是否可见(如果ScrollView当前显示了视图的任何部分)。我希望下面的代码能做到这一点,但令人惊讶的是,它没有做到:

代码语言:javascript
复制
Rect bounds = new Rect();
view.getDrawingRect(bounds);

Rect scrollBounds = new Rect(scroll.getScrollX(), scroll.getScrollY(), 
        scroll.getScrollX() + scroll.getWidth(), scroll.getScrollY() + scroll.getHeight());

if(Rect.intersects(scrollBounds, bounds))
{
    //is  visible
}
EN

回答 10

Stack Overflow用户

发布于 2012-09-15 00:04:03

这是可行的:

代码语言:javascript
复制
Rect scrollBounds = new Rect();
scrollView.getHitRect(scrollBounds);
if (imageView.getLocalVisibleRect(scrollBounds)) {
    // Any portion of the imageView, even a single pixel, is within the visible window
} else {
    // NONE of the imageView is within the visible window
}
票数 204
EN

Stack Overflow用户

发布于 2016-06-07 19:06:04

我的解决方案是使用NestedScrollView滚动元素:

代码语言:javascript
复制
    final Rect scrollBounds = new Rect();
    scroller.getHitRect(scrollBounds);

    scroller.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
        @Override
        public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {

            if (myBtn1 != null) {

                if (myBtn1.getLocalVisibleRect(scrollBounds)) {
                    if (!myBtn1.getLocalVisibleRect(scrollBounds)
                            || scrollBounds.height() < myBtn1.getHeight()) {
                        Log.i(TAG, "BTN APPEAR PARCIALY");
                    } else {
                        Log.i(TAG, "BTN APPEAR FULLY!!!");
                    }
                } else {
                    Log.i(TAG, "No");
                }
            }

        }
    });
}
票数 21
EN

Stack Overflow用户

发布于 2013-07-11 23:08:04

要使用getLocalVisibleRect扩展Bill Mote的答案,您可能需要检查视图是否仅部分可见:

代码语言:javascript
复制
Rect scrollBounds = new Rect();
scrollView.getHitRect(scrollBounds);
if (!imageView.getLocalVisibleRect(scrollBounds)
    || scrollBounds.height() < imageView.getHeight()) {
    // imageView is not within or only partially within the visible window
} else {
    // imageView is completely visible
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4628800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档