Interface used by Text composables to override text size to automatically grow or shrink text to fill the layout bounds.

Summary

Public companion functions

TextAutoSize
StepBased(minFontSize: TextUnit, maxFontSize: TextUnit, stepSize: TextUnit)

Automatically size the text with the biggest font size that fits the available space.

Cmn

Public functions

operator Boolean
equals(other: Any?)

This type is used in performance-sensitive paths and requires providing equality guarantees.

Cmn
TextUnit
TextAutoSizeLayoutScope.getFontSize(
    constraints: Constraints,
    text: AnnotatedString
)

Calculates font size and provides access to TextAutoSizeLayoutScope, which offers TextAutoSizeLayoutScope.performLayout to lay out the text and use the measured size.

Cmn
Int

This type is used in performance-sensitive paths and requires providing identity guarantees.

Cmn

Public companion functions

StepBased

fun StepBased(
    minFontSize: TextUnit = TextAutoSizeDefaults.MinFontSize,
    maxFontSize: TextUnit = TextAutoSizeDefaults.MaxFontSize,
    stepSize: TextUnit = 0.25.sp
): TextAutoSize

Automatically size the text with the biggest font size that fits the available space.

Parameters
minFontSize: TextUnit = TextAutoSizeDefaults.MinFontSize

The smallest potential font size of the text. Default = 12.sp. This must be smaller than maxFontSize; an IllegalArgumentException will be thrown otherwise.

maxFontSize: TextUnit = TextAutoSizeDefaults.MaxFontSize

The largest potential font size of the text. Default = 112.sp. This must be larger than minFontSize; an IllegalArgumentException will be thrown otherwise.

stepSize: TextUnit = 0.25.sp

The smallest difference between potential font sizes. Specifically, every font size, when subtracted by minFontSize, is divisible by stepSize. Default = 0.25.sp. This must not be less than 0.0001f.sp; an IllegalArgumentException will be thrown otherwise. If stepSize is greater than the difference between minFontSize and maxFontSize, minFontSize will be used for the layout.

Returns
TextAutoSize

AutoSize instance with the step-based configuration. Using this in a compatible composable will cause its text to be sized as above.

Public functions

equals

operator fun equals(other: Any?): Boolean

This type is used in performance-sensitive paths and requires providing equality guarantees. Using a data class is sufficient. Singletons may implement this function with referential equality (this === other). Instances with no properties may implement this function by checking the type of the other object.

Returns
Boolean

true if both AutoSize instances are identical.

fun TextAutoSizeLayoutScope.getFontSize(
    constraints: Constraints,
    text: AnnotatedString
): TextUnit

Calculates font size and provides access to TextAutoSizeLayoutScope, which offers TextAutoSizeLayoutScope.performLayout to lay out the text and use the measured size.

import androidx.compose.foundation.text.BasicText
import androidx.compose.foundation.text.TextAutoSize
import androidx.compose.foundation.text.modifiers.TextAutoSizeLayoutScope
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.TextUnit
import androidx.compose.ui.unit.sp

data class PresetsTextAutoSize(private val presets: Array<TextUnit>) : TextAutoSize {
    override fun TextAutoSizeLayoutScope.getFontSize(
        constraints: Constraints,
        text: AnnotatedString
    ): TextUnit {
        var lastTextSize: TextUnit = TextUnit.Unspecified
        for (presetSize in presets) {
            val layoutResult = performLayout(constraints, text, presetSize)
            if (
                layoutResult.size.width <= constraints.maxWidth &&
                    layoutResult.size.height <= constraints.maxHeight
            ) {
                lastTextSize = presetSize
            } else {
                break
            }
        }
        return lastTextSize
    }
}

@Composable
fun App() {
    val autoSize = remember { PresetsTextAutoSize(arrayOf(10.sp, 14.sp, 21.sp)) }
    BasicText(text = "Hello World", autoSize = autoSize)
}
Returns
TextUnit

The derived optimal font size

See also
performLayout

hashCode

fun hashCode(): Int

This type is used in performance-sensitive paths and requires providing identity guarantees.

Returns
Int

a unique hashcode for this AutoSize instance.