0

在此处输入图像描述//我有如下xml格式的回收器视图

<?xml version=“1.0”encoding=“utf-8”?><LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android"android:layout_width=“match_parent”android:layout_height=“match_parent”android:orientation=“vertical”><include layout=“@layout/toolbar”/><框架布局android:layout_width=“match_parent”android:layout_height=“match_parent”><android.support.v7.widget。回收站视图android:id=“@+id/grid_recycle_view”android:layout_width=“match_parent”android:layout_height=“match_parent”android:clipToPadding=“false”android:background=“#f8f9fb”/><android.support.v7.widget。回收站视图android:id=“@+id/list_recycle_view”android:visibility=“invisible”android:layout_width=“match_parent”android:layout_height=“match_parent”/></FrameLayout></LinearLayout>

//在我的onprepareGridView方法中,我完成了以下操作

私有void prepareGridRecycleView(){gridRecyclerView.setHasFixedSize(true);SpaceItemDecoration itemDecoration=新的SpaceItemDetection(10);gridRecyclerView.setClipToPadding(false);gridRecyclerView.addItemDecoration(itemDecoration);适配器=new ShopPageGridViewAdapter(ShopPageContent.this,new Shop PageHeaderGridInterface(){@覆盖public void onClick(boolean isClicked){gridRecyclerView.setVisibility(View.INVISIBLE);listRecycleView.setVisibility(View.VISIBLE);}},新建ShopPageHeaderListInterface(){@覆盖public void onClick(boolean isClicked){}},新CartCoordivateInfoHolder(){@覆盖公共void setViewCoordinate(ImageView视图,int x,int y){view.setVisibility(view.VISIBLE);view.bringToFront();view.invalidate();int pos[]=新int[2];cart.getLocationOnScreen(位置);Log.e(“x”,String.valueOf(pos[0]));Log.e(“y”,String.valueOf(pos[1]));TranslateAnimation anim=新的TranslateAnimation(0,pos[0]-x,0,pos[1]-y);anim.setDuration(5000);anim.setFillAfter(true);view.startAnimation(动画);}});最终GridLayoutManager管理器=新GridLayotManager(this,2);manager.setSpanSizeLookup(新的GridLayoutManager.SpanSize查找(){@覆盖public int getSpanSize(int位置){返回适配器。是PositionHeader(位置)吗?manager.getSpanCount():1;}});gridRecyclerView.setAdapter(适配器);gridRecyclerView.setLayoutManager(管理器);}

//item装饰器类如下所示

公共类SpaceItemDecoration扩展了RecyclerView。项目装饰{私有int空间;public SpaceItemDecoration(int空格){this.space=空格;}@覆盖public void getItemOffsets(Rect outRect,查看视图,RecyclerView父级,Recycler视图。州-州){int position=parent.getChildAdapterPosition(视图);if(位置==0){outRect.left=0;outRect.right=0;outRect.bottom=0;outRect.top=0;回报;}if(parent.getChildAdapterPosition(view)==1||parent.get儿童适配器位置(view,view)==2){outRect.top=0;outRect.left=(空格);outRect.right=空间;outRect.bottom=空格;回报;}outRect.left=空格;[在此处输入图像描述][1]outRect.right=空间;outRect.bottom=空格;outRect.top=空格;}}

//我面临的问题是左侧和右侧的空间不同。左侧空间小于右侧空间。

//图像链接

5
  • 我在这里添加了图像链接i.sstatic.net/cKj4j.png 评论 2016年2月28日8:54
  • 更改您的SpaceItem装饰.
    – 节食者
    评论 2016年2月28日9:10
  • 上述装饰中的问题是什么。请给我一些提示,这样我就可以在理解的基础上做出改变 评论 2016年2月28日10:02
  • 如果你有一个2列的网格。在第一列设置所有边的边距,在第二个跳跃,例如左边距。
    – 节食者
    评论 2016年2月28日10:46
  • 好的,我理解你的意思,但我如何才能得到元素在recyclerview item decorator类中的位置 评论 2016年2月28日13:05

1答案1

重置为默认值

尝试:

公共类SpaceItemDecoration扩展了RecyclerView。项目装饰{私有int空间;public SpaceItemDecoration(int空格){this.space=空格;}@覆盖public void getItemOffsets(Rect outRect,查看视图,RecyclerView父级,Recycler视图。州-州){int position=parent.getChildAdapterPosition(视图);outRect.left=空格;outRect.right=空间;outRect.bottom=空格;outRect.top=空格;if(位置%2==0){outRect.left=0;}}}

该代码未经测试;

0

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.