Open yccheok opened 2 years ago
我的猜想应该是可以从这里下手。
可是,我还不知道如何直接把 CalendarView import as source ,好让我可以一边修改,一边调试。我先试试看,再给回馈。
有任何宝贵意见,欢迎提出。谢谢。
我做了个简陋的解决方案。
就是在滚动 CalendarLayout 时,我确保 ViewPager2 不能被滚动。
class NoteFragment implements CalendarLayoutListener
@Override
public void action(int action) {
if (viewPager2 == null) {
return;
}
if (action == ACTION_MOVE) {
viewPager2.setUserInputEnabled(false);
} else {
viewPager2.setUserInputEnabled(true);
}
}
class CalendarLayout {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouchEvent(MotionEvent event) {
...
mVelocityTracker.addMovement(event);
if (calendarLayoutListener != null) {
calendarLayoutListener.action(action);
}
这是我快速解决方案。欢迎指教。至于为何 ViewPager 和 ViewPager2 会有不同的行为,还是未知数。
https://github.com/yccheok/CalendarView/commit/7400b844ce99ffa36b9f35b2b7976c24decc13c6
您好。多年来,我用的 ViewPager 能和 CalendarView 无缝结合。请参阅影片。如果我把 CalendarView 推上一半,然后要左右滑动 ViewPager,ViewPager 并不会滑动(这是我想要的效果,防止用户手滑)
https://www.youtube.com/watch?v=4DBLBTxyjMA
可是,当我采用 ViewPager2。如果我把 CalendarView 往上推一般,然后不小心手滑左右移动,ViewPager2 左右滑动。
https://www.youtube.com/watch?v=B11WFX5Ivns
请问,我要如何在 CalendarView 下手,已在上下滑动的动作还未完成,防止把左右滑动 event 传给 ViewPager2?
我尝试了一个纯 RecyclerView 和 CalendarView 结合。如果我把 RecyclerView 向上下滑动到一半(手指不要提起),然后左右滑动,ViewPager2 是不会滑动的。
谢谢