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.youkuaiyun.com/agent_bin/article/details/52050307