MagicMashRoom / SuperCalendar

@Deprecated android 自定义日历控件 支持左右无限滑动 周月切换 标记日期显示 自定义显示效果跳转到指定日期
2.76k stars 484 forks source link

当recyclerView里数据很少时切换周月的问题 #57

Open awq14789 opened 7 years ago

awq14789 commented 7 years ago

RecyclerView里的数据很少,整个屏幕占不满时,较快速的上划RecyclerView切换周月,会造成月视图显示不全的问题。 选中的那周会直接跳到最顶部,然后MonthPager和RecyclerView之间会显示空白(如图所示)

图片

whb7762300 commented 7 years ago

我也遇到这个问题了,请问解决了吗?

yihuyixi commented 7 years ago

恩,这个bug该如何解决呢

awq14789 commented 7 years ago

这个bug跟选择日历的第几行关系应该不大,只要手指初始按压的位置不在recyclerView的item中滑动就会出现此bug。初步估计应该是behavior的问题,但是我对buhavior机制不是太熟练,所以。。。。 如图

PeterGoower commented 7 years ago

我也遇到了这个问题,研究了半天也没解决,只能求助于作者了

echozheng1 commented 7 years ago

我也遇到了这个问题了

mumu1990 commented 7 years ago

一样啊~有大神解决了的吗?请指教?

LiHexiang commented 7 years ago

我也遇到了这个问题 郁闷了啊

echozheng1 commented 7 years ago

重写recylerview 的 onInterceptTouchEvent 方法。返回false.

echozheng1 commented 7 years ago

我试了下。我的可以,你们可以试试

mumu1990 commented 7 years ago

亲自试过了,你说得对,重写onInterceptTouchEvent 方法并返回false有效。之前还以为要在behavior中动手脚呢!谢谢啦

awq14789 commented 7 years ago

onInterceptTouchEvent直接返回false?那RecyclerView里的数据很长,超过屏幕的话还能滑动吗?

mumu1990 commented 7 years ago

确实是啊~有一个解决方法是判断RecyclerView里的数据,根据数据多少来判断onInterceptTouchEvent中是返回false还是返回true,但是也存在另一个问题,就是当数据很多的时候我们返回true,此时item的点击事件就被拦截了。因此我在考虑是不是要根据手势判断是点击事件还是滑动事件,可是似乎也不太好判断。。。

ma969070578 commented 7 years ago

求解决方法~

drowtram commented 7 years ago

找到了一个临时解决方案,就是给RecyclerView设置背景色,可以解决这个问题

PeterGoower commented 7 years ago

楼上的,RecyclerView我设置了background了,但还是有这个问题

drowtram commented 7 years ago

我设置背景色后,给recyclerview设置适配器后,就没有这个问题了

MagicMashRoom commented 7 years ago

我抽空把这个问题解决一下 现在项目有点忙可能时间有点不足 有好的解决方法的话 可以在这里讨论

ma969070578 commented 7 years ago

if (monthPager.getTop() < 0) { // if (monthPager.getTop() + monthPager.getTopMovableDistance() >= 0) { // monthPager.offsetTopAndBottom(-monthPager.getTop() // - monthPager.getTopMovableDistance()); // } else { // monthPager.offsetTopAndBottom(-monthPager.getTop()); // } parent.dispatchDependentViewsChanged(child); }

Utils scrollTo 删掉中间这几行。

1Patience-and-1careful commented 7 years ago

楼上给力,删了果然有效

PeterGoower commented 7 years ago

不错啊,可以了。