浅谈Android RecyclerView 间距全适配
本文介绍了AndroidRecyclerView间距全适配,分享给大家,具体如下:
LinearLayoutManagerspacing
importandroid.graphics.Rect; importandroid.support.v7.widget.RecyclerView; importandroid.view.View; /** *Createdbyanonymouson2016/9/90009. **SpacesItemDecoration *
*mRecyclerView.addItemDecoration(newSpacesItemDecoration(5)); */ publicclassSpacesItemDecorationextendsRecyclerView.ItemDecoration{ privateintspace; publicSpacesItemDecoration(intspace){ this.space=space; } @Override publicvoidgetItemOffsets(RectoutRect,Viewview,RecyclerViewparent,RecyclerView.Statestate){ outRect.left=space; outRect.right=space; outRect.bottom=space; //Addtopmarginonlyforthefirstitemtoavoiddoublespacebetweenitems if(parent.getChildLayoutPosition(view)==0){ outRect.top=space; }else{ outRect.top=0; } } }
使用方法很简单,上面注释中也已经给出:
mRecyclerView.addItemDecoration(newSpacesItemDecoration(5));
GridLayoutManagerorStaggeredGridLayoutManagerspacing
importandroid.graphics.Rect; importandroid.support.v7.widget.RecyclerView; importandroid.view.View; /** *Createdbyanonymouson2016/9/90009. **GridSpacingItemDecoration *
*intspanCount=3;//3columns *intspacing=50;//50px *booleanincludeEdge=false; *recyclerView.addItemDecoration(newGridSpacingItemDecoration(spanCount,spacing,includeEdge)); */ publicclassGridSpacingItemDecorationextendsRecyclerView.ItemDecoration{ privateintspanCount; privateintspacing; privatebooleanincludeEdge; publicGridSpacingItemDecoration(intspanCount,intspacing,booleanincludeEdge){ this.spanCount=spanCount; this.spacing=spacing; this.includeEdge=includeEdge; } @Override publicvoidgetItemOffsets(RectoutRect,Viewview,RecyclerViewparent,RecyclerView.Statestate){ intposition=parent.getChildAdapterPosition(view);//itemposition intcolumn=position%spanCount;//itemcolumn if(includeEdge){ outRect.left=spacing-column*spacing/spanCount;//spacing-column*((1f/spanCount)*spacing) outRect.right=(column+1)*spacing/spanCount;//(column+1)*((1f/spanCount)*spacing) if(position
=spanCount){ outRect.top=spacing;//itemtop } } } }
此处不仅对间距进行了处理,而且对spanCount也进行了处理,使用方法:
intspanCount=3;//3columns intspacing=50;//50px booleanincludeEdge=false; mRecyclerView.addItemDecoration(newGridSpacingItemDecoration(spanCount,spacing,includeEdge));
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。