setOnScrollChangeListener不兼容
开发中为scrollview设置监听,setOnScrollChangeListener报找不到类的错误,
原来是这个方法是API23才出来的,没有做向下兼容,所以在低版本运行就会报错。
解决这个问题有两个方法:
- 解决方案是使用ViewTreeObserver
scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
}
});
2.自定义scrollview,自己去实现一个借口
重写 onScrollChanged(int x, int y, int oldx, int oldy)方法,在方法中调用接口。
public class MyScrollView extends ScrollView {
private OnScrollChanged mOnScrollChanged;
public MyScrollView(Context context) {
this(context,null);
}
public MyScrollView(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (mOnScrollChanged != null)
mOnScrollChanged.onScroll(l, t, oldl, oldt);
}
public void setOnScrollChanged(OnScrollChanged onScrollChanged){
this.mOnScrollChanged = onScrollChanged;
}
public interface OnScrollChanged{
void onScroll(int l, int t, int oldl, int oldt);
}
}
转载自:https://blog.****.net/gone_the_rainbow/article/details/52851360