---
title: "LazyColumn"
description: "The vertically scrolling list that only composes and lays out the currently visible items. The
[content] block defines a DSL which allows you to emit items of different types. For example you
can use [LazyListScope.item] to add a single item and [LazyListScope.items] to add a list of
items."
type: "composable"
---

<div class='type'>Composable Function</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>


```kotlin
@Composable
fun LazyColumn(
    modifier: Modifier = Modifier,
    state: LazyListState = rememberLazyListState(),
    contentPadding: PaddingValues = PaddingValues(0.dp),
    reverseLayout: Boolean = false,
    verticalArrangement: Arrangement.Vertical =
        if (!reverseLayout) Arrangement.Top else Arrangement.Bottom,
    horizontalAlignment: Alignment.Horizontal = Alignment.Start,
    flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior(),
    userScrollEnabled: Boolean = true,
    overscrollEffect: OverscrollEffect? = rememberOverscrollEffect(),
    content: LazyListScope.() -> Unit,
)
```


The vertically scrolling list that only composes and lays out the currently visible items. The
`content` block defines a DSL which allows you to emit items of different types. For example you
can use `LazyListScope.item` to add a single item and `LazyListScope.items` to add a list of
items.

#### Parameters

| | |
| --- | --- |
| modifier | the modifier to apply to this layout. |
| state | the state object to be used to control or observe the list's state. |
| contentPadding | a padding around the whole content. This will add padding for the. content after it has been clipped, which is not possible via `modifier` param. You can use it to add a padding before the first item or after the last one. If you want to add a spacing between each item use `verticalArrangement`. |
| reverseLayout | reverse the direction of scrolling and layout. When `true`, items are laid out in the reverse order and `LazyListState.firstVisibleItemIndex` == 0 means that column is scrolled to the bottom. Note that `reverseLayout` does not change the behavior of `verticalArrangement`, e.g. with `Arrangement.Top` (top) 123### (bottom) becomes (top) 321### (bottom). |
| verticalArrangement | The vertical arrangement of the layout's children. This allows to add a spacing between items and specify the arrangement of the items when we have not enough of them to fill the whole minimum size. |
| horizontalAlignment | the horizontal alignment applied to the items. |
| flingBehavior | logic describing fling behavior. |
| userScrollEnabled | whether the scrolling via the user gestures or accessibility actions is allowed. You can still scroll programmatically using the state even when it is disabled |
| overscrollEffect | the `OverscrollEffect` that will be used to render overscroll for this layout. Note that the `OverscrollEffect.node` will be applied internally as well - you do not need to use Modifier.overscroll separately. |
| content | a block which describes the content. Inside this block you can use methods like `LazyListScope.item` to add a single item or `LazyListScope.items` to add a list of items. |




<div class='sourceset sourceset-common'>Common</div>


> **Deprecated** Use the non deprecated overload

```kotlin
@Composable
fun LazyColumn(
    modifier: Modifier = Modifier,
    state: LazyListState = rememberLazyListState(),
    contentPadding: PaddingValues = PaddingValues(0.dp),
    reverseLayout: Boolean = false,
    verticalArrangement: Arrangement.Vertical =
        if (!reverseLayout) Arrangement.Top else Arrangement.Bottom,
    horizontalAlignment: Alignment.Horizontal = Alignment.Start,
    flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior(),
    userScrollEnabled: Boolean = true,
    content: LazyListScope.() -> Unit,
)
```


<div class='sourceset sourceset-common'>Common</div>


> **Deprecated** Use the non deprecated overload

```kotlin
@Composable
fun LazyColumn(
    modifier: Modifier = Modifier,
    state: LazyListState = rememberLazyListState(),
    contentPadding: PaddingValues = PaddingValues(0.dp),
    reverseLayout: Boolean = false,
    verticalArrangement: Arrangement.Vertical =
        if (!reverseLayout) Arrangement.Top else Arrangement.Bottom,
    horizontalAlignment: Alignment.Horizontal = Alignment.Start,
    flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior(),
    content: LazyListScope.() -> Unit,
)
```



## Code Examples
### LazyColumnSample
```kotlin
@Composable
fun LazyColumnSample() {
    val itemsList = (0..5).toList()
    val itemsIndexedList = listOf("A", "B", "C")
    LazyColumn {
        items(itemsList) { Text("Item is $it") }
        item { Text("Single item") }
        itemsIndexed(itemsIndexedList) { index, item -> Text("Item at index $index is $item") }
    }
}
```

