wrapContentHeight

Compose Modifier

Common
fun Modifier.wrapContentHeight(
    align: Alignment.Vertical = Alignment.CenterVertically,
    unbounded: Boolean = false,
) =
    this.then(
        if (align == Alignment.CenterVertically && !unbounded) {
            WrapContentHeightCenter
        } else if (align == Alignment.Top && !unbounded) {
            WrapContentHeightTop
        } else {
            WrapContentElement.height(align, unbounded)
        }
    )

Allow the content to measure at its desired height without regard for the incoming measurement minimum height constraint, and, if unbounded is true, also without regard for the incoming measurement maximum height constraint. If the content's measured size is smaller than the minimum height constraint, align it within that minimum height space. If the content's measured size is larger than the maximum height constraint (only possible when unbounded is true), align over the maximum height space.

Code Examples

SimpleWrapContentVerticallyAlignedModifier

@Composable
fun SimpleWrapContentVerticallyAlignedModifier() {
    // Here the result will be a 50.dp x 20.dp blue box centered vertically in a 50.dp x 50.dp
    // space. Because of the size modifier, if wrapContentHeight did not exist,
    // the blue rectangle would actually be 50.dp x 50.dp to satisfy the size set by the modifier.
    // However, because we provide wrapContentHeight, the blue rectangle is specified to be wrap
    // content in height - if the desired height is smaller than 50.dp, it will be centered
    // vertically in this space. Therefore the 50.dp x 20.dp is centered vertically in the space.
    Box(
        Modifier.size(50.dp)
            .wrapContentHeight(Alignment.CenterVertically)
            .height(20.dp)
            .background(Color.Blue)
    )
}