開發中爲scrollview設置監聽,setOnScrollChangeListener報找不到類的錯誤,
原來是這個方法是API23纔出來的,沒有做向下兼容,所以在低版本運行就會報錯。
解決這個問題有兩個方法:
1. 解決方案是使用ViewTreeObserver
scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
}
});
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);
}
}