public class

ItemSpacingDecoration

extends RecyclerView.ItemDecoration

 java.lang.Object

androidx.recyclerview.widget.RecyclerView.ItemDecoration

↳androidx.car.widget.itemdecorators.ItemSpacingDecoration

Gradle dependencies

compile group: 'androidx.car', name: 'car', version: '1.0.0-alpha7'

  • groupId: androidx.car
  • artifactId: car
  • version: 1.0.0-alpha7

Artifact androidx.car:car:1.0.0-alpha7 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.car:car com.android.support:car

Overview

A that will add spacing between each item in the RecyclerView that it is added to.

Summary

Constructors
publicItemSpacingDecoration(int itemSpacing)

Methods
public voidgetItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state)

Retrieve any offsets for the given item.

public voidsetItemSpacing(int itemSpacing)

from RecyclerView.ItemDecorationgetItemOffsets, onDraw, onDraw, onDrawOver, onDrawOver
from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructors

public ItemSpacingDecoration(int itemSpacing)

Methods

public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state)

Retrieve any offsets for the given item. Each field of outRect specifies the number of pixels that the item view should be inset by, similar to padding or margin. The default implementation sets the bounds of outRect to 0 and returns.

If this ItemDecoration does not affect the positioning of item views, it should set all four fields of outRect (left, top, right, bottom) to zero before returning.

If you need to access Adapter for additional data, you can call RecyclerView.getChildAdapterPosition(View) to get the adapter position of the View.

Parameters:

outRect: Rect to receive the output.
view: The child view to decorate
parent: RecyclerView this ItemDecoration is decorating
state: The current state of RecyclerView.

public void setItemSpacing(int itemSpacing)

Parameters:

itemSpacing: sets spacing between each item.

Source

/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.car.widget.itemdecorators;

import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;

import android.graphics.Rect;
import android.view.View;

import androidx.annotation.RestrictTo;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

/**
 * A {@link RecyclerView.ItemDecoration} that will add spacing between each item in the
 * RecyclerView that it is added to.
 *
 * @hide
 */
@RestrictTo(LIBRARY_GROUP_PREFIX)
public class ItemSpacingDecoration extends RecyclerView.ItemDecoration {
    private int mItemSpacing;

    public ItemSpacingDecoration(int itemSpacing) {
        mItemSpacing = itemSpacing;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
            RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);
        int position = parent.getChildAdapterPosition(view);

        // Skip offset for last item except for GridLayoutManager.
        if (position == state.getItemCount() - 1
                && !(parent.getLayoutManager() instanceof GridLayoutManager)) {
            return;
        }

        outRect.bottom = mItemSpacing;
    }

    /**
     * @param itemSpacing sets spacing between each item.
     */
    public void setItemSpacing(int itemSpacing) {
        mItemSpacing = itemSpacing;
    }
}