RecycleView想必都不陌生,然而有些时候它还是让人比较蛋疼的.比如,在5.0以上的机器中它居然不能正常显示~!
我在做项目的时候用的一般是4.0~5.0的模拟器,当时做了一个RecycleView显示两行八条数据.这个很简单,写完打开模拟器挨个看看,没问题,ok,提交上去.
结果没过多久测试就找到我:"你这个怎么只有四条数据啊,不是8条吗?"
我一脸的懵逼,百度之后才知道RecycleView还有这个坑,解决办法也很简单,就在RecycleView外边随便嵌套一个ViewGroup就行了.有的教程说重写LinearLayoutManager,GridLayoutManager那些布局管理器,让他们计算高度什么的,感觉挺麻烦的,没有尝试.
之后没几天, 又做了个上下拉刷新的,还要仿某东的布局切换.布局切换简单啊,RecycleView一键搞定,但是上下拉刷新就有些问题了.你要自己写一个也行,比较麻烦,虽然网上都有,但是需要高版本的支持,所以我就用了比较简单的PullToRefreshScrollView来做.
但是问题又来了,上下拉刷新没问题,数据都能正常拿到,但是在5.0以上手机,在进行上拉下一页加载的时候,rv一直处于底部状态,你不下滑一下再上滑,根本不会显示下面的数据.为啥?显然是下滑之前RecycleView并没有正常计算出当前该有的高度,所以一直觉得已经到底了.
没有办法,再给它套一个ViewGroup,问题解决.
但是还有问题,5.0以上它滑起来没有惯性了,看着不爽用起来也不爽.解决办法就是加代码:
GridLayoutManager grid = new GridLayoutManager(getBaseActivity(), 2); grid.setSmoothScrollbarEnabled(true); rvSearchGoods.setLayoutManager(grid); rvSearchGoods.setNestedScrollingEnabled(false);
为你的布局管理器添加smoothScrollbarEnabled = true属性,为你的rv添加nestedScrollingEnabled = false属性,ok了,惯性滑动又回来了.
------------------------------
我错啦,不能随便嵌套ViewGroup,只有RelativeLayout才可以,也是醉了