ScalingLazyListState

class ScalingLazyListState : ScrollableState


A state object that can be hoisted to control and observe scrolling.

In most cases, this will be created via rememberScalingLazyListState.

Summary

Public companion properties

Saver<ScalingLazyListStateAny>

The default Saver implementation for ScalingLazyListState.

Public constructors

ScalingLazyListState(
    initialCenterItemIndex: Int,
    initialCenterItemScrollOffset: Int
)

Public functions

suspend Unit
animateScrollToItem(index: Int, scrollOffset: Int)

Animate (smooth scroll) the given item at index to the center of the viewport and position it based on the anchorType and applies the scrollOffset pixels.

open Float
open suspend Unit
scroll(scrollPriority: MutatePriority, block: suspend ScrollScope.() -> Unit)
suspend Unit
scrollToItem(index: Int, scrollOffset: Int)

Instantly brings the item at index to the center of the viewport and positions it based on the anchorType and applies the scrollOffset pixels.

Public properties

open Boolean
open Boolean
Int

The index of the item positioned closest to the viewport center

Int

The offset of the item closest to the viewport center.

open Boolean
ScalingLazyListLayoutInfo

The object of ScalingLazyListLayoutInfo calculated during the last layout pass.

Public companion properties

Saver

Added in 1.2.0
val SaverSaver<ScalingLazyListStateAny>

The default Saver implementation for ScalingLazyListState.

Public constructors

ScalingLazyListState

Added in 1.2.0
ScalingLazyListState(
    initialCenterItemIndex: Int = 1,
    initialCenterItemScrollOffset: Int = 0
)
Parameters
initialCenterItemIndex: Int = 1

the initial value for ScalingLazyListState.centerItemIndex, defaults to 1. This will place the 2nd list item (index == 1) in the center of the viewport and the first item (index == 0) before it.

If the developer wants custom control over position and spacing they can switch off autoCentering and provide contentPadding.

initialCenterItemScrollOffset: Int = 0

the initial value for ScalingLazyListState.centerItemScrollOffset

Note that it is not always possible for the values provided by initialCenterItemIndex and initialCenterItemScrollOffset to be honored, e.g. If initialCenterItemIndex is set to a value larger than the number of items initially in the list, or to an index that can not be placed in the middle of the screen due to the contentPadding or autoCentering properties provided to the ScalingLazyColumn. After the ScalingLazyColumn is initially drawn the actual values for the centerItemIndex and centerItemScrollOffset can be read from the state.

Public functions

animateScrollToItem

Added in 1.2.0
suspend fun animateScrollToItem(index: Int, scrollOffset: Int = 0): Unit

Animate (smooth scroll) the given item at index to the center of the viewport and position it based on the anchorType and applies the scrollOffset pixels.

Parameters
index: Int

the index to which to scroll. Must be non-negative.

scrollOffset: Int = 0

the offset that the item should end up after the scroll (same as scrollToItem) - note that positive offset refers to forward scroll, so in a top-to-bottom list, positive offset will scroll the item further upward (taking it partly offscreen)

dispatchRawDelta

Added in 1.2.0
open fun dispatchRawDelta(delta: Float): Float

scroll

Added in 1.2.0
open suspend fun scroll(scrollPriority: MutatePriority, block: suspend ScrollScope.() -> Unit): Unit

scrollToItem

Added in 1.2.0
suspend fun scrollToItem(index: Int, scrollOffset: Int = 0): Unit

Instantly brings the item at index to the center of the viewport and positions it based on the anchorType and applies the scrollOffset pixels.

Parameters
index: Int

the index to which to scroll. Must be non-negative.

scrollOffset: Int = 0

the offset that the item should end up after the scroll. Note that positive offset refers to forward scroll, so in a top-to-bottom list, positive offset will scroll the item further upward (taking it partly offscreen).

Public properties

canScrollBackward

open val canScrollBackwardBoolean

canScrollForward

open val canScrollForwardBoolean

centerItemIndex

Added in 1.2.0
val centerItemIndexInt

The index of the item positioned closest to the viewport center

centerItemScrollOffset

Added in 1.2.0
val centerItemScrollOffsetInt

The offset of the item closest to the viewport center. Depending on the ScalingLazyListAnchorType of the ScalingLazyColumn the offset will be relative to either the items Edge or Center.

A positive value indicates that the center item's anchor point is above the viewport center-line, a negative value indicates that the center item anchor point is below the viewport center-line.

isScrollInProgress

Added in 1.2.0
open val isScrollInProgressBoolean

layoutInfo

Added in 1.2.0
val layoutInfoScalingLazyListLayoutInfo

The object of ScalingLazyListLayoutInfo calculated during the last layout pass. For example, you can use it to calculate what items are currently visible.