public class LoadmoreScrollView extends ScrollView {
private int count=0;
private OnScrollToBottomListener onScrollToBottom;
public LoadmoreScrollView(Context context) {
super(context);
}
public LoadmoreScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
View childAt = getChildAt(0);
if (childAt.getMeasuredHeight()<=getHeight()+getScrollY()){
count++;
if (count==1){
Log.i("myscrollview","开始加载更多");
if (onScrollToBottom!=null){
onScrollToBottom.onScrollBottomListener(true);
count=0;
}
}
}else{
count=0;
if (onScrollToBottom!=null){
onScrollToBottom.onScrollBottomListener(false);
}
}
}
public void setOnScrollToBottomLintener(OnScrollToBottomListener listener){
onScrollToBottom = listener;
}
public interface OnScrollToBottomListener{
void onScrollBottomListener(boolean isBottom);
}
private int count=0;
private OnScrollToBottomListener onScrollToBottom;
public LoadmoreScrollView(Context context) {
super(context);
}
public LoadmoreScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
View childAt = getChildAt(0);
if (childAt.getMeasuredHeight()<=getHeight()+getScrollY()){
count++;
if (count==1){
Log.i("myscrollview","开始加载更多");
if (onScrollToBottom!=null){
onScrollToBottom.onScrollBottomListener(true);
count=0;
}
}
}else{
count=0;
if (onScrollToBottom!=null){
onScrollToBottom.onScrollBottomListener(false);
}
}
}
public void setOnScrollToBottomLintener(OnScrollToBottomListener listener){
onScrollToBottom = listener;
}
public interface OnScrollToBottomListener{
void onScrollBottomListener(boolean isBottom);
}
}
通过判断当前的高度和手指滑动的距离来和子孩子的高度去比较,如何大于子孩子的高度,说明滑动到了底部并且还在滑动,表示要上拉加载,这些定义一个回调给调用者自己去操作