项目中使用上拉刷新下拉加载更多的listview,在魅族机器上运行的时候遇到比较奇怪的bug,和flyme的系统有关系,总结如下,希望可以帮助到没有思路的同学。
关于listview的问题主要和魅族手机的scrollview类顶部可继续下拉有关系。
1.如果你的下拉刷新有比较复杂的动画,那么魅族手机可能会让这个动画无效,需要禁用掉listview本身的下拉模式。
android:overScrollMode=”never” 或者 listView.setOverScrollMode(Listview.OVER_SCROLL_NEVER);
如此就不会对动画产生影响。
2.如果listview的子item过多,产品mm设计了一个点击回到顶部的功能,你大概会选用这个api:listview.smoothScrollToPositionFromTop(int position, int offset);
设置position和offset为0时,就可以回到顶部。但在部分手机上不会达到预期结果,只是滑动了一部分,没有回到顶部,目前已知小米和魅族。
参考stackoverflow上的回答,采用如下思路:
1.正常设置position和offset为0
2.设置滚动监听事件,如果滑动结束,则通过setSelection(0)来设置到顶部。
代码如下:
//第三个参数为滚动时间 listView.smoothScrollToPositionFromTop(0,0,1000);