RecyclerView的ItemDecoration簡易使用(去除RecyclerView(任意一條)分割線)

項目中經常遇到給RecyclerView左右設置padding、layout_margin,有時候會導致item不能滑動到邊緣,設置ItemDecoration呢,又容易第一個item和最後一個item的邊緣和item之間的間距不一樣

所以就初步使用下面的方法,可以自己設置每個item的padding值,不需要再在RecyclerView裏設置啦,代碼沒有封裝,只有初步使用,經常使用的話,建議提取出來

   RecyclerView.ItemDecoration itemDecoration = new RecyclerView.ItemDecoration() {
            @Override
            public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
                super.onDraw(c, parent, state);
            }

            @Override
            public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
                super.getItemOffsets(outRect, view, parent, state);
                int childAdapterPosition = parent.getChildAdapterPosition(view);
                int lastCount = parent.getAdapter().getItemCount() - 1;
                if (childAdapterPosition == 0) {
                   //第一個item 設置paddingRight  8 dp
                    outRect.set(0, 0, DimenUtil.dp2px(getContext(), 8), 0);
                } else if (childAdapterPosition == lastCount) {
                   //最後一個item 設置paddingLeft  8 dp
                    outRect.set(DimenUtil.dp2px(getContext(), 8), 0, 0, 0);
                } else {
                    outRect.set(DimenUtil.dp2px(getContext(), 8), 0, DimenUtil.dp2px(getContext(), 8), 0);
                }
            }
        };

        rectclerview.addItemDecoration(itemDecoration);

提供一下DimenUtil.dp2px方法:

	public static int dp2px(Context context, float dp) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dp * scale + 0.5);
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章