您的位置:首页 > 其它

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

2017-01-11 17:50 267 查看
一、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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息