您的位置:首页 > 移动开发 > Android开发

解决Android SwipeRefreshLayout & RecyclerView使用的Bug

2015-12-02 16:25 656 查看


1、引言

用Android提供的support包里的SwipeRefreshLayout和RecyclerView同时使用的时候会出现RecyclerView的item被裁剪的情况,如下图所示:




2、解决此Bug的方法

参考资料如下:

http://stackoverflow.com/questions/25178329/recyclerview-and-swiperefreshlayout/25227797#25227797

https://gist.github.com/VladSumtsov/ad4e13511a9b73ff3b13

上面显示的是两种解决办法,我推荐第二种比较简单,我的代码片段如下:

[java] view
plaincopy





mLayoutManager = new LinearLayoutManager(getActivity());

//mPicListView是RecyclerView对象

mPicListView.setLayoutManager(mLayoutManager);

mPicListView.setOnScrollListener(new OnScrollListener() {

@Override

public void onScrollStateChanged(RecyclerView recyclerView,

int newState) {

super.onScrollStateChanged(recyclerView, newState);

//加载更多

if (!isLoading

&& hasMore

&& mAdapter.getItemCount() == (mLayoutManager

.findLastVisibleItemPosition() + 1)

&& newState == RecyclerView.SCROLL_STATE_IDLE) {

isLoading = true;

requestServerArticleMore();

}

}

@Override

public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

super.onScrolled(recyclerView, dx, dy);

//解决RecyclerView和SwipeRefreshLayout共用存在的bug

mRefreshLayout.setEnabled(mLayoutManager

.findFirstCompletelyVisibleItemPosition() == 0);

}

});

希望对你有帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: