Как заставить View.OnScrollChangeListener работать на ViewPagger для Android версии 23 (Зефир) и ниже
View.setOnScrollChangeListener
добавлен в версию 23. Мы хотим, чтобы она работала и в следующей версии. Для этого мы можем настроить scrollTo()
функция
1 ответ
Во-первых, создайте свой собственный слушатель, который точно получит его из View.OnScrollChangeListener
public interface CustomOnScrollChangeListener {
/**
* Called when the scroll position of a view changes.
*
* @param v The view whose scroll position has changed.
* @param scrollX Current horizontal scroll origin.
* @param scrollY Current vertical scroll origin.
* @param oldScrollX Previous horizontal scroll origin.
* @param oldScrollY Previous vertical scroll origin.
*/
void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY);
}
Тогда вы можете создать кастом ViewPager
учебный класс
public class CustomPager extends ViewPager {
private int mScrollingX, mScrollingY;
private CustomOnScrollChangeListener mListener;
public CustomPager(Context context) {
super(context);
}
public CustomPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setCustomScrollChangeListener(CustomOnScrollChangeListener listener) {
mListener = listener;
}
@Override
public void scrollTo(@Px int x, @Px int y) {
super.scrollTo(x, y);
if (mScrollingX != x || mScrollingY != y) {
int oldX = mScrollingX;
int oldY = mScrollingY;
mScrollingX = x;
mScrollingY = y;
invalidate();
mListener.onScrollChange(this, mScrollingX, mScrollingY, oldX, oldY);
if (!awakenScrollBars()) {
postInvalidateOnAnimation();
}
}
}
}
И теперь вы можете начать использовать его.
mViewPager.setCustomScrollChangeListener(new CustomOnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX,
int oldScrollY) {
//Put your logic code here
}
});