關於recyclerview 設置item之間的距離

recyclerview本身有一個ItemDecoration的類 是可以用來自由設置間距的
但是一定要注意的是 不能重複設置 如果重複設置 列表間距會越來越大的哦

public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
    private static final String TAG=SpacesItemDecoration.class.getSimpleName();

    private int space;
    private List<ActionCenterBean.DataBean> list;
    private Context context;




    public SpacesItemDecoration(int space, List<ActionCenterBean.DataBean> list, Context context) {
        this.space = space;
        this.list=list;
        this.context=context;

    }

    @Override
    public void getItemOffsets(Rect outRect, View view,
                               RecyclerView parent, RecyclerView.State state) {
          //設置item的上下左右的margin
            outRect.left = space;
            outRect.right = space;
//        outRect.bottom = space;
//設置列表首個item和最後一個item的margin間距
            if (parent.getChildAdapterPosition(view)==0){
                int dimensionPixelSize = context.getResources().getDimensionPixelSize(R.dimen.dp_41);
                outRect.left=dimensionPixelSize;
            }
            if (parent.getChildAdapterPosition(view)==list.size()-1){
                int dimensionPixelSize = context.getResources().getDimensionPixelSize(R.dimen.dp_41);
                outRect.right=dimensionPixelSize;
            }





        // Add top margin only for the first item to avoid double space between items
//        if (parent.getChildPosition(view) == 0)
//            outRect.top = space;
    }
}

初始化

//間距的標識,每次啓動或者刷新的時候 只設置一次間距 
      spaceTag++;

        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
        linearLayoutManager.setOrientation(RecyclerView.HORIZONTAL);
        home_recycler.setLayoutManager(linearLayoutManager);
        if (spaceTag==1){
            home_recycler.addItemDecoration(new SpacesItemDecoration(getResources().getDimensionPixelOffset(R.dimen.dp_17),data,context));
        }

參考:https://www.jianshu.com/p/e372cec819db

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章