可滑动控件判断是否滑到底部和顶部的方法总结

来源:互联网 发布:王思聪 霍顿 知乎 编辑:程序博客网 时间:2024/04/29 14:48

一、ListView 和GridView,判断方法相同。

        public boolean isGetTop() {            if (absListView.getCount() == 0) {                return true;            } else if (absListView.getFirstVisiblePosition() == 0 && absListView.getChildAt(0).getTop() >= absListView.getPaddingTop()) {                return true;            }            return false;        }
        public boolean isGetBottom() {            int firstVisiblePosition = absListView.getFirstVisiblePosition();            int lastVisiblePosition = absListView.getLastVisiblePosition();            int count = absListView.getCount();            if (count == 0) {                return true;            } else if (lastVisiblePosition == (count - 1)) {                View view = absListView.getChildAt(lastVisiblePosition - firstVisiblePosition);                if (view != null && view.getBottom() <= absListView.getMeasuredHeight() - absListView.getPaddingBottom())                    return true;            }            return false;        }

二、ScrollView 和 NestedScrollView

        public boolean isGetTop() {            if (scrollView.getScrollY() <= 0)                return true;            else                return false;        }
        public boolean isGetBottom() {            if (scrollView.getChildCount() == 0) {                return true;            }            if (scrollView.getScrollY() >= (scrollView.getChildAt(0).getHeight() - scrollView.getMeasuredHeight()))                return true;            else                return false;        }

三、WebView

     public boolean isGetBottom() {            if (webView.getScrollY() >= webView.getContentHeight() * webView.getScale() - webView.getMeasuredHeight())                return true;            else                return false;        }
        public boolean isGetTop() {            if (webView.getScrollY() <= 0)                return true;            else                return false;        }

四、RecyclerView

        private void initLayoutManager() {            if (layoutManager == null) {                RecyclerView.LayoutManager layout = recyclerView.getLayoutManager();                if (layout != null && layout instanceof LinearLayoutManager) {                    layoutManager = (LinearLayoutManager) layout;                }            }        }
        public boolean isGetTop() {            initLayoutManager();            if (layoutManager != null) {                if (layoutManager.getItemCount() == 0) {                    return true;                } else if (layoutManager.findFirstVisibleItemPosition() == 0 && recyclerView.getChildAt(0).getTop() >= recyclerView.getPaddingTop()) {                    return true;                }            }            return false;        }
        public boolean isGetBottom() {            initLayoutManager();            if (layoutManager != null) {                int count = layoutManager.getItemCount();                if (count == 0) {                    return true;                } else if (layoutManager.findLastCompletelyVisibleItemPosition() == count - 1) {                    return true;                }            }            return false;        }    }
1 0
原创粉丝点击