---
title: "TopAppBarState"
description: "A state object that can be hoisted to control and observe the top app bar state. The state is
read and updated by a [TopAppBarScrollBehavior] implementation.

In most cases, this state will be created via [rememberTopAppBarState]."
type: "class"
---

<div class='type'>Class</div>


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

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


```kotlin
class TopAppBarState(
    initialHeightOffsetLimit: Float,
    initialHeightOffset: Float,
    initialContentOffset: Float,
)
```


A state object that can be hoisted to control and observe the top app bar state. The state is
read and updated by a `TopAppBarScrollBehavior` implementation.

In most cases, this state will be created via `rememberTopAppBarState`.

#### Parameters

| | |
| --- | --- |
| initialHeightOffsetLimit | the initial value for `TopAppBarState.heightOffsetLimit` |
| initialHeightOffset | the initial value for `TopAppBarState.heightOffset` |
| initialContentOffset | the initial value for `TopAppBarState.contentOffset` |



## Properties

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


```kotlin
var heightOffsetLimit = initialHeightOffsetLimit
```


The top app bar's height offset limit in pixels, which represents the limit that a top app
bar is allowed to collapse to.

Use this limit to coerce the `heightOffset` value when it's updated.



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


```kotlin
var heightOffset: Float
```


The top app bar's current height offset in pixels. This height offset is applied to the fixed
height of the app bar to control the displayed height when content is being scrolled.

Updates to the `heightOffset` value are coerced between zero and `heightOffsetLimit`.



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


```kotlin
var contentOffset
```


The total offset of the content scrolled under the top app bar.

The content offset is used to compute the `overlappedFraction`, which can later be read by an
implementation.

This value is updated by a `TopAppBarScrollBehavior` whenever a nested scroll connection
consumes scroll events. A common implementation would update the value to be the sum of all
`NestedScrollConnection.onPostScroll` `consumed.y` values.



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


```kotlin
val collapsedFraction: Float
```


A value that represents the collapsed height percentage of the app bar.

A `0.0` represents a fully expanded bar, and `1.0` represents a fully collapsed bar (computed
as `heightOffset` / `heightOffsetLimit`).



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


```kotlin
val overlappedFraction: Float
```


A value that represents the percentage of the app bar area that is overlapping with the
content scrolled behind it.

A `0.0` indicates that the app bar does not overlap any content, while `1.0` indicates that
the entire visible app bar area overlaps the scrolled content.



## Companion Object

#### Properties

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


```kotlin
val Saver: Saver<TopAppBarState, *>
```


The default `Saver` implementation for `TopAppBarState`.





