Я видел много ответов на этот вопрос, а также реализовал один из них, но проблема в том, что он не работает в соответствии с ожиданиями при запуске, но через некоторое время он начинает работать нормально.
Это мой код.
rvCalender.setOnTouchListener(new View.OnTouchListener() {
float initialY, finalY;
boolean isScrollingUp;
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = MotionEventCompat.getActionMasked(event);
switch(action) {
case (MotionEvent.ACTION_DOWN):
initialY = event.getY();
case (MotionEvent.ACTION_UP):
finalY = event.getY();
if (initialY < finalY) {
Log.d("SCROLLED", "Scrolling up");
isScrollingUp = true;
isScrolledDownward=false;
} else if (initialY > finalY) {
Log.d("SCROLLED", "Scrolling down");
isScrolledDownward= true;
isScrollingUp = false;
}
default:
}
return false;
}
});
Так что, как только я начинаю прокручивать recyclerview
, он продолжает возвращать isScrollDownward
false, но после прокрутки 7-8 пунктов, он начинает давать мне isScrollDownward
true, что хорошо, но я не могу понять, почему это происходит не работает правильно на старте.
, или это правильный способ получения пользовательского направления прокрутки, или есть какой-то другой лучший способ.