您的位置:首页 > 其它

RecycleView在addItemDecoration之后每次重新加载这个页面的时候,item之间的间距都会不断变大大概是变大一倍

2017-09-10 16:09 1876 查看
RecycleView在addItemDecoration之后每次重新加载这个页面的时候,item之间的间距都会不断变大大概是每次变大一倍







尝试重写onActivityCreated的时候再调用addItemDecoration方法

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LogUtil.e("TAGD", "第二个fragment    onActivityCreated");
recyMicTv.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) view.getLayoutParams();
int viewAdapterPosition = layoutParams.getViewAdapterPosition();
if (viewAdapterPosition % 2 == 0) {//0
outRect.set(0, DimenUtils.dp2px(6), DimenUtils.dp2px(3), 0);
} else if (viewAdapterPosition % 2 == 1) {//1
outRect.set(DimenUtils.dp2px(3), DimenUtils.dp2px(6), 0, 0);
}

}
});
}




解析:

因为继承的是懒加载的BaseFragment,所以lazyLoad()是每次进入Fragment的时候就会执行一次,所以放在onActivityCreated()中执行一次就行

onCreateView():每次创建、绘制该Fragment的View组件时回调该方法,Fragment将会显示该方法返回的View组件。

onActivityCreated():当Fragment所在的Activity被启动完成后回调该方法。

什么时候调用onActivityCreated()呢:

1、静态的view不需要onActivityCreated

2、保存view的状态的时候需要用onActivityCreated

3、访问父activity的view层的时候需要在onActivityCreated 方法里面做

参考博客:http://blog.csdn.net/agent_bin/article/details/52050307
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐