# RecyclerView.ItemDecoration

# RecyclerView.ItemDecoration

Artifact:[androidx.recyclerview:recyclerview](https://developer.android.com/jetpack/androidx/releases/recyclerview)  
[View Source](https://cs.android.com/search?q=file:androidx/recyclerview/widget/RecyclerView.java+class:androidx.recyclerview.widget.RecyclerView.ItemDecoration)  
Added in[1.0.0](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.0.0)

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.ItemDecoration "View this page in Java")

<br />

```
abstract class RecyclerView.ItemDecoration
```

<br />

Known direct subclasses  
[DividerItemDecoration](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/DividerItemDecoration),[ItemTouchHelper](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/ItemTouchHelper)  

|----------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [DividerItemDecoration](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/DividerItemDecoration) | DividerItemDecoration is a[RecyclerView.ItemDecoration](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration)that can be used as a divider between items of a[LinearLayoutManager](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/LinearLayoutManager). |
| [ItemTouchHelper](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/ItemTouchHelper)             | This is a utility class to add swipe to dismiss and drag \&drop support to RecyclerView.                                                                                                                                                                                                                                                |

*** ** * ** ***

An ItemDecoration allows the application to add a special drawing and layout offset to specific item views from the adapter's data set. This can be useful for drawing dividers between items, highlights, visual grouping boundaries and more.

All ItemDecorations are drawn in the order they were added, before the item views (in[onDraw()](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDraw(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView,androidx.recyclerview.widget.RecyclerView.State))and after the items (in[onDrawOver](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDrawOver(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView,androidx.recyclerview.widget.RecyclerView.State)).

## Summary

|                                                            ### Public constructors                                                             |
|------------------------------------------------------------------------------------------------------------------------------------------------|
| [ItemDecoration](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#ItemDecoration())`()` |

|                             ### Public functions                              |
|-------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | ~~[getItemOffsets](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#getItemOffsets(android.graphics.Rect,int,androidx.recyclerview.widget.RecyclerView))~~`(outRect: `[Rect](https://developer.android.com/reference/android/graphics/Rect.html)`, itemPosition: `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`, parent: `[RecyclerView](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView)`)` **This function is deprecated.** Use[getItemOffsets](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#getItemOffsets(android.graphics.Rect,android.view.View,androidx.recyclerview.widget.RecyclerView,androidx.recyclerview.widget.RecyclerView.State)) <br /> |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | [getItemOffsets](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#getItemOffsets(android.graphics.Rect,android.view.View,androidx.recyclerview.widget.RecyclerView,androidx.recyclerview.widget.RecyclerView.State))`(` ` outRect: `[Rect](https://developer.android.com/reference/android/graphics/Rect.html)`,` ` view: `[View](https://developer.android.com/reference/android/view/View.html)`,` ` parent: `[RecyclerView](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView)`,` ` state: `[RecyclerView.State](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.State) `)` Retrieve any offsets for the given item.                                                                                     |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | ~~[onDraw](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDraw(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView))~~`(c: `[Canvas](https://developer.android.com/reference/android/graphics/Canvas.html)`, parent: `[RecyclerView](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView)`)` **This function is deprecated.** Override[onDraw](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDraw(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView,androidx.recyclerview.widget.RecyclerView.State)) <br />                                                                                                                                             |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | [onDraw](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDraw(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView,androidx.recyclerview.widget.RecyclerView.State))`(c: `[Canvas](https://developer.android.com/reference/android/graphics/Canvas.html)`, parent: `[RecyclerView](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView)`, state: `[RecyclerView.State](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.State)`)` Draw any appropriate decorations into the Canvas supplied to the RecyclerView.                                                                                                                                                                               |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | ~~[onDrawOver](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDrawOver(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView))~~`(c: `[Canvas](https://developer.android.com/reference/android/graphics/Canvas.html)`, parent: `[RecyclerView](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView)`)` **This function is deprecated.** Override[onDrawOver](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDrawOver(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView,androidx.recyclerview.widget.RecyclerView.State)) <br />                                                                                                                             |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | [onDrawOver](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDrawOver(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView,androidx.recyclerview.widget.RecyclerView.State))`(c: `[Canvas](https://developer.android.com/reference/android/graphics/Canvas.html)`, parent: `[RecyclerView](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView)`, state: `[RecyclerView.State](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.State)`)` Draw any appropriate decorations into the Canvas supplied to the RecyclerView.                                                                                                                                                                       |

## Public constructors

### ItemDecoration

Added in 1.0.0  

```
ItemDecoration()
```  

## Public functions

### getItemOffsets

Added in[1.0.0](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.0.0)  
Deprecated in[1.0.0](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.0.0)  

```
fun [getItemOffsets](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#getItemOffsets(android.graphics.Rect,int,androidx.recyclerview.widget.RecyclerView))(outRect: Rect, itemPosition: Int, parent: RecyclerView): Unit
```
| **This function is deprecated.**   
|
Use[getItemOffsets](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#getItemOffsets(android.graphics.Rect,android.view.View,androidx.recyclerview.widget.RecyclerView,androidx.recyclerview.widget.RecyclerView.State))  

### getItemOffsets

Added in[1.0.0](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.0.0)  

```
fun getItemOffsets(
    outRect: Rect,
    view: View,
    parent: RecyclerView,
    state: RecyclerView.State
): Unit
```

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[getChildAdapterPosition](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView#getChildAdapterPosition(android.view.View))to get the adapter position of the View.  

|                                                          Parameters                                                           |
|-------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------|
| `outRect: `[Rect](https://developer.android.com/reference/android/graphics/Rect.html)                                         | Rect to receive the output.                    |
| `view: `[View](https://developer.android.com/reference/android/view/View.html)                                                | The child view to decorate                     |
| `parent: `[RecyclerView](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView)            | RecyclerView this ItemDecoration is decorating |
| `state: `[RecyclerView.State](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.State) | The current state of RecyclerView.             |

### onDraw

Added in[1.0.0](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.0.0)  
Deprecated in[1.0.0](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.0.0)  

```
fun [onDraw](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDraw(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView))(c: Canvas, parent: RecyclerView): Unit
```
| **This function is deprecated.**   
|
Override[onDraw](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDraw(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView,androidx.recyclerview.widget.RecyclerView.State))  

### onDraw

Added in[1.0.0](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.0.0)  

```
fun onDraw(c: Canvas, parent: RecyclerView, state: RecyclerView.State): Unit
```

Draw any appropriate decorations into the Canvas supplied to the RecyclerView. Any content drawn by this method will be drawn before the item views are drawn, and will thus appear underneath the views.  

|                                                          Parameters                                                           |
|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------|
| `c: `[Canvas](https://developer.android.com/reference/android/graphics/Canvas.html)                                           | Canvas to draw into                              |
| `parent: `[RecyclerView](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView)            | RecyclerView this ItemDecoration is drawing into |
| `state: `[RecyclerView.State](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.State) | The current state of RecyclerView                |

### onDrawOver

Added in[1.0.0](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.0.0)  
Deprecated in[1.0.0](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.0.0)  

```
fun [onDrawOver](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDrawOver(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView))(c: Canvas, parent: RecyclerView): Unit
```
| **This function is deprecated.**   
|
Override[onDrawOver](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.ItemDecoration#onDrawOver(android.graphics.Canvas,androidx.recyclerview.widget.RecyclerView,androidx.recyclerview.widget.RecyclerView.State))  

### onDrawOver

Added in[1.0.0](https://developer.android.com/jetpack/androidx/releases/recyclerview#1.0.0)  

```
fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State): Unit
```

Draw any appropriate decorations into the Canvas supplied to the RecyclerView. Any content drawn by this method will be drawn after the item views are drawn and will thus appear over the views.  

|                                                          Parameters                                                           |
|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------|
| `c: `[Canvas](https://developer.android.com/reference/android/graphics/Canvas.html)                                           | Canvas to draw into                              |
| `parent: `[RecyclerView](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView)            | RecyclerView this ItemDecoration is drawing into |
| `state: `[RecyclerView.State](https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/RecyclerView.State) | The current state of RecyclerView.               |