aspectRatio

Compose Modifier

Common
fun Modifier.aspectRatio(
    @FloatRange(from = 0.0, fromInclusive = false) ratio: Float,
    matchHeightConstraintsFirst: Boolean = false,
) =
    this.then(
        AspectRatioElement(
            ratio,
            matchHeightConstraintsFirst,
            debugInspectorInfo {
                name = "aspectRatio"
                properties["ratio"] = ratio
                properties["matchHeightConstraintsFirst"] = matchHeightConstraintsFirst
            },
        )
    )

Attempts to size the content to match a specified aspect ratio by trying to match one of the incoming constraints in the following order: Constraints.maxWidth, Constraints.maxHeight, Constraints.minWidth, Constraints.minHeight if matchHeightConstraintsFirst is false (which is the default), or Constraints.maxHeight, Constraints.maxWidth, Constraints.minHeight, Constraints.minWidth if matchHeightConstraintsFirst is true. The size in the other dimension is determined by the aspect ratio. The combinations will be tried in this order until one non-empty is found to satisfy the constraints. If no valid size is obtained this way, it means that there is no non-empty size satisfying both the constraints and the aspect ratio, so the constraints will not be respected and the content will be sized such that the Constraints.maxWidth or Constraints.maxHeight is matched (depending on matchHeightConstraintsFirst).

Parameters

ratiothe desired width/height positive ratio
matchHeightConstraintsFirstif true, height constraints will be matched before width constraints and used to calculate the resulting size according to ratio