前几天做项目用到了scrollView的滑动监听,当时用了
goodsScroll.setOnScrollChangeListener(new View.OnScrollChangeListener()
在android 5.1.1的板子上用着是好的,但今天在android 4.4的板子上就会崩。上网查了一下资料,setOnScrollChangeListener是在API23上用的,不向下兼容。网上的解决方法是:
自定义一个scrollView,写一个接口,把scrollView的onScrollChanged()方法暴露出去:
public class ObservableScrollView extends ScrollView { private OnScrollChangeListener scrollChangeListener = null; public ObservableScrollView(Context context) { super(context); } public ObservableScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public ObservableScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public void setScrollViewListener(OnScrollChangeListener onScrollChangeListener){ this.scrollChangeListener = onScrollChangeListener; } @Override protected void onScrollChanged(int x,int y,int oldx,int oldy){ super.onScrollChanged(x,y,oldx,oldy); if(scrollChangeListener != null){ scrollChangeListener.onScrollChanged(this,x,y,oldx,oldy); } } public interface OnScrollChangeListener{ void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy); } }
在页面上调用 :
goodsScroll.setScrollViewListener(new ObservableScrollView.OnScrollChangeListener() { @Override public void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy) { } });