New Compose Multiplatform components arrived on Composables UICheck it out →


A lazy vertical grid layout. It composes only visible rows of the grid.

Last updated:


dependencies {


fun TvLazyVerticalGrid(
    columns: TvGridCells,
    modifier: Modifier = Modifier,
    state: TvLazyGridState = rememberTvLazyGridState(),
    contentPadding: PaddingValues = PaddingValues(0.dp),
    reverseLayout: Boolean = false,
    verticalArrangement: Arrangement.Vertical =
        if (!reverseLayout) Arrangement.Top else Arrangement.Bottom,
    horizontalArrangement: Arrangement.Horizontal = Arrangement.Start,
    userScrollEnabled: Boolean = true,
    pivotOffsets: PivotOffsets = PivotOffsets(),
    content: TvLazyGridScope.() -> Unit


columnsdescribes the count and the size of the grid's columns, see [TvGridCells] doc for more information
modifierthe modifier to apply to this layout
statethe state object to be used to control or observe the list's state
contentPaddingspecify a padding around the whole content
reverseLayoutreverse the direction of scrolling and layout. When true, items will be laid out in the reverse order and [TvLazyGridState.firstVisibleItemIndex] == 0 means that grid 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).
verticalArrangementThe vertical arrangement of the layout's children
horizontalArrangementThe horizontal arrangement of the layout's children
pivotOffsetsoffsets that are used when implementing Scrolling with Offset
userScrollEnabledwhether the scrolling via the user gestures or accessibility actions is allowed. You can still scroll programmatically using the state even when it is disabled.
pivotOffsetsoffsets of child element within the parent and starting edge of the child from the pivot defined by the parentOffset.
contentthe [TvLazyGridScope] which describes the content