One Logo Pool Ball
wwwwwwwwwwwwwwwwwww

Android Compose

Jetpack Compose views under One.Android

One.Android Compose card with a switch, slider, chips, buttons, and a progress indicator

Jetpack Compose views under One.Android, drawn by Material 3.

Usage

import { useState } from 'react'
import { One } from 'one'
export function Settings() {
const [on, setOn] = useState(true)
return (
<One.Android.Card composeStyle={{ padding: 16 }}>
<One.Android.Switch label="Airplane mode" isOn={on} onIsOnChange={setOn} />
</One.Android.Card>
)
}

Shared props

Every node takes these. A node inside a Compose tree styles through composeStyle; style applies only at the root of the tree.

PropsTypeDescription
childrenReactNodeCompose children, on layout nodes.
ReactNodeCompose children, on layout nodes.
accessibilityRoleComposeAccessibilityRolebutton, switch, checkbox, radio, header, text, adjustable, alert, or progressbar.
ComposeAccessibilityRolebutton, switch, checkbox, radio, header, text, adjustable, alert, or progressbar.
styleStyleProp<ViewStyle>React Native style, at the root of a Compose tree only.
StyleProp<ViewStyle>React Native style, at the root of a Compose tree only.
composeStyleComposeStyleCompose modifiers. See below.
ComposeStyleCompose modifiers. See below.

Nodes also take accessibilityLabel, accessibilityState, accessibilityValue, and testID.

ComposeStyleTypeDescription
backgroundColorColorValueThe fill behind the node.
ColorValueThe fill behind the node.
foregroundColorColorValueThe content color, such as an icon tint.
ColorValueThe content color, such as an icon tint.
paddingnumberPadding on every side, in dp.
numberPadding on every side, in dp.
paddingTopnumberTop padding, in dp.
numberTop padding, in dp.
paddingRightnumberRight padding, in dp.
numberRight padding, in dp.
paddingBottomnumberBottom padding, in dp.
numberBottom padding, in dp.
paddingLeftnumberLeft padding, in dp.
numberLeft padding, in dp.
widthnumberA fixed width, in dp.
numberA fixed width, in dp.
heightnumberA fixed height, in dp.
numberA fixed height, in dp.
fillMaxWidthbooleanFills the parent width.
booleanFills the parent width.
fillMaxHeightbooleanFills the parent height.
booleanFills the parent height.
weightnumberA share of the free space in a Row or Column.
numberA share of the free space in a Row or Column.
cornerRadiusnumberRounds the node, in dp.
numberRounds the node, in dp.
opacitynumberFrom 0 to 1.
numberFrom 0 to 1.
borderColorColorValueThe border color.
ColorValueThe border color.
borderWidthnumberThe border width, in dp.
numberThe border width, in dp.

Column, Row, Box

One.Android.Column stacks children vertically, Row horizontally, and Box layers them.

ColumnTypeDescription
horizontalAlignmentComposeHorizontalAlignment = "start"start, centerHorizontally, or end.
ComposeHorizontalAlignment = "start"start, centerHorizontally, or end.
verticalArrangementComposeVerticalArrangement = "top"top, center, bottom, spaceBetween, spaceAround, or spaceEvenly.
ComposeVerticalArrangement = "top"top, center, bottom, spaceBetween, spaceAround, or spaceEvenly.
spacingnumberThe gap between children, in dp.
numberThe gap between children, in dp.
RowTypeDescription
verticalAlignmentComposeVerticalAlignment = "top"top, centerVertically, or bottom.
ComposeVerticalAlignment = "top"top, centerVertically, or bottom.
horizontalArrangementComposeHorizontalArrangement = "start"start, center, end, spaceBetween, spaceAround, or spaceEvenly.
ComposeHorizontalArrangement = "start"start, center, end, spaceBetween, spaceAround, or spaceEvenly.
spacingnumberThe gap between children, in dp.
numberThe gap between children, in dp.
BoxTypeDescription
contentAlignmentComposeContentAlignmentWhere children sit: topStart through bottomEnd, or top, bottom, start, end.
ComposeContentAlignmentWhere children sit: topStart through bottomEnd, or top, bottom, start, end.

One.Android.FlowRow wraps children across rows.

FlowRowTypeDescription
horizontalArrangementComposeHorizontalArrangement | Readonly<{ spacedBy: number }> = "start"A Row arrangement, or a fixed gap in dp.
ComposeHorizontalArrangement | Readonly<{ spacedBy: number }> = "start"A Row arrangement, or a fixed gap in dp.
verticalArrangementComposeVerticalArrangement | Readonly<{ spacedBy: number }> = "top"A Column arrangement, or a fixed gap between rows in dp.
ComposeVerticalArrangement | Readonly<{ spacedBy: number }> = "top"A Column arrangement, or a fixed gap between rows in dp.

One.Android.Spacer takes the shared props only. As a direct child of a Row or Column with composeStyle={{ weight: 1 }} it takes the free space; with width or height it is a fixed gap. Any other direct child takes a positive weight the same way.

Text

PropsTypeDescription
text (required)stringThe text.
stringThe text.
fontSizenumberThe size in sp. The theme body size when unset.
numberThe size in sp. The theme body size when unset.
fontWeightComposeFontWeightthin, extraLight, light, normal, medium, semiBold, bold, extraBold, or black.
ComposeFontWeightthin, extraLight, light, normal, medium, semiBold, bold, extraBold, or black.
textAlignComposeTextAlignunspecified, left, right, center, justify, start, or end.
ComposeTextAlignunspecified, left, right, center, justify, start, or end.
maxLinesnumberThe most lines shown.
numberThe most lines shown.

Icon

One.Android.Icon draws a Material Symbol. See Android Icons. For an icon on every platform, use One.UI.Icon.

Buttons

One.Android.Button shows a label with an optional leading icon.

ButtonTypeDescription
label (required)stringThe title.
stringThe title.
onPress() => voidRuns when tapped.
() => voidRuns when tapped.
variantComposeButtonVariant = "filled"filled, tonal, elevated, outlined, or text.
ComposeButtonVariant = "filled"filled, tonal, elevated, outlined, or text.
toneComposeButtonTone = "default"default, or danger for the error colors.
ComposeButtonTone = "default"default, or danger for the error colors.
iconComposeIconNameA Material Symbol before the label.
ComposeIconNameA Material Symbol before the label.
iconFilledboolean = falseUses the filled icon font.
boolean = falseUses the filled icon font.
disabledboolean = falseDims the button and ignores taps.
boolean = falseDims the button and ignores taps.

IconButton, FilledIconButton, FilledTonalIconButton, and OutlinedIconButton wrap an Icon child.

IconButtonTypeDescription
children (required)ReactNodeThe Icon.
ReactNodeThe Icon.
onClick() => voidRuns when tapped.
() => voidRuns when tapped.
enabledbooleanfalse dims the button and ignores taps.
booleanfalse dims the button and ignores taps.
colorsComposeIconButtonColorsContainer and content colors, enabled and disabled.
ComposeIconButtonColorsContainer and content colors, enabled and disabled.

FloatingActionButton, SmallFloatingActionButton, and LargeFloatingActionButton take an Icon in their .Icon slot. ExtendedFloatingActionButton also takes Text in .Text.

FloatingActionButtonTypeDescription
children (required)ReactNodeThe .Icon and, when extended, .Text slots.
ReactNodeThe .Icon and, when extended, .Text slots.
containerColorColorValueThe button color. The theme when unset.
ColorValueThe button color. The theme when unset.
onClick() => voidRuns when tapped.
() => voidRuns when tapped.

ExtendedFloatingActionButton adds expanded, which shows or hides its text.

ToggleButton, IconToggleButton, FilledIconToggleButton, and OutlinedIconToggleButton are the Material 3 toggles.

ToggleButtonTypeDescription
children (required)ReactNodeThe content, such as an Icon.
ReactNodeThe content, such as an Icon.
checked (required)booleanWhether the toggle is on.
booleanWhether the toggle is on.
onCheckedChange(checked: boolean) => voidA tap, with the new value.
(checked: boolean) => voidA tap, with the new value.
enabledboolean = truefalse dims the toggle and ignores taps.
boolean = truefalse dims the toggle and ignores taps.
colorsComposeToggleButtonColorsContainer and content colors, normal, checked, and disabled.
ComposeToggleButtonColorsContainer and content colors, normal, checked, and disabled.
revisionnumber = 0Increase with a new checked to reset it from outside.
number = 0Increase with a new checked to reset it from outside.

Segmented buttons

SingleChoiceSegmentedButtonRow and MultiChoiceSegmentedButtonRow hold SegmentedButton children. In a single choice row, pass selected and onClick; in a multiple choice row, pass checked and onCheckedChange.

SegmentedButtonTypeDescription
children (required)ReactNodeThe segment label.
ReactNodeThe segment label.
selectedbooleanWhether the segment is chosen, in a single choice row.
booleanWhether the segment is chosen, in a single choice row.
onClick() => voidA tap, in a single choice row.
() => voidA tap, in a single choice row.
checkedbooleanWhether the segment is on, in a multiple choice row.
booleanWhether the segment is on, in a multiple choice row.
onCheckedChange(checked: boolean) => voidA tap, in a multiple choice row.
(checked: boolean) => voidA tap, in a multiple choice row.
enabledboolean = truefalse dims the segment and ignores taps.
boolean = truefalse dims the segment and ignores taps.
colorsComposeSegmentedButtonColorsBorder, content, and container colors, active, inactive, and disabled.
ComposeSegmentedButtonColorsBorder, content, and container colors, active, inactive, and disabled.
revisionnumber = 0Increase with a new checked to reset it from outside.
number = 0Increase with a new checked to reset it from outside.

Switch

PropsTypeDescription
isOn (required)booleanWhether the switch is on.
booleanWhether the switch is on.
onIsOnChange (required)(value: boolean) => voidA flip, with the new value.
(value: boolean) => voidA flip, with the new value.
labelstring = ""Text before the switch. The whole row toggles.
string = ""Text before the switch. The whole row toggles.
disabledboolean = falseDims the switch and ignores taps.
boolean = falseDims the switch and ignores taps.
colorsComposeSwitchColorsThumb, track, border, and icon colors for each state.
ComposeSwitchColorsThumb, track, border, and icon colors for each state.
revisionnumber = 0Increase with a new isOn to reset it from outside.
number = 0Increase with a new isOn to reset it from outside.

Checkbox, RadioButton

Without a callback, each is read only. Omitted colors use the Material theme.

CheckboxTypeDescription
value (required)booleanWhether the box is checked.
booleanWhether the box is checked.
onCheckedChange(value: boolean) => voidA tap, with the new value.
(value: boolean) => voidA tap, with the new value.
disabledboolean = falseDims the box and ignores taps.
boolean = falseDims the box and ignores taps.
revisionnumber = 0Increase with a new value to reset it from outside.
number = 0Increase with a new value to reset it from outside.
colorsReadonly<{ checkedColor?: ColorValue disabledCheckedColor?: ColorValue uncheckedColor?: ColorValue disabledUncheckedColor?: ColorValue checkmarkColor?: ColorValue }>Box and checkmark colors.
Readonly<{ checkedColor?: ColorValue disabledCheckedColor?: ColorValue uncheckedColor?: ColorValue disabledUncheckedColor?: ColorValue checkmarkColor?: ColorValue }>Box and checkmark colors.
RadioButtonTypeDescription
selected (required)booleanWhether the button is chosen.
booleanWhether the button is chosen.
onClick() => voidA tap. Set selected yourself.
() => voidA tap. Set selected yourself.
disabledboolean = falseDims the button and ignores taps.
boolean = falseDims the button and ignores taps.
colorsReadonly<{ selectedColor?: ColorValue unselectedColor?: ColorValue disabledSelectedColor?: ColorValue disabledUnselectedColor?: ColorValue }>Ring and dot colors.
Readonly<{ selectedColor?: ColorValue unselectedColor?: ColorValue disabledSelectedColor?: ColorValue disabledUnselectedColor?: ColorValue }>Ring and dot colors.

Cards, Surface

Card, ElevatedCard, and OutlinedCard wrap children in the Material 3 card surfaces. ElevatedCard takes no border. Without one, Card has no border and OutlinedCard uses the theme outline.

CardTypeDescription
colorsComposeCardColors{ containerColor, contentColor }.
ComposeCardColors{ containerColor, contentColor }.
elevationnumberThe shadow depth in dp. Zero or more.
numberThe shadow depth in dp. Zero or more.
borderComposeCardBorder{ width, color }, width in dp, 1 by default.
ComposeCardBorder{ width, color }, width in dp, 1 by default.

One.Android.Surface is a Material 3 surface. Round it with composeStyle.cornerRadius. With onClick it is clickable, with selected and onClick selectable, and with checked and onCheckedChange toggleable.

SurfaceTypeDescription
colorColorValueThe surface color.
ColorValueThe surface color.
contentColorColorValueThe color of content on it.
ColorValueThe color of content on it.
tonalElevationnumberTints the surface by depth, in dp.
numberTints the surface by depth, in dp.
shadowElevationnumberThe shadow depth, in dp.
numberThe shadow depth, in dp.
borderComposeCardBorder{ width, color }.
ComposeCardBorder{ width, color }.
enabledboolean = truefalse ignores taps.
boolean = truefalse ignores taps.
selectedbooleanMakes it selectable, with onClick.
booleanMakes it selectable, with onClick.
checkedbooleanMakes it toggleable, with onCheckedChange.
booleanMakes it toggleable, with onCheckedChange.
onClick() => voidRuns when tapped.
() => voidRuns when tapped.
onCheckedChange(checked: boolean) => voidA tap, with the new checked value.
(checked: boolean) => voidA tap, with the new checked value.
revisionnumber = 0Increase with a new checked to reset it from outside.
number = 0Increase with a new checked to reset it from outside.

ListItem

One.Android.ListItem is a Material 3 row. Put Compose content in its .HeadlineContent slot, and optionally .OverlineContent, .SupportingContent, .LeadingContent, and .TrailingContent.

PropsTypeDescription
colorsComposeListItemColorsContainer and per slot content colors.
ComposeListItemColorsContainer and per slot content colors.
tonalElevationnumberTints the row by depth, in dp.
numberTints the row by depth, in dp.
shadowElevationnumberThe shadow depth, in dp.
numberThe shadow depth, in dp.

Dividers

HorizontalDivider and VerticalDivider draw Material 3 lines. Give a vertical divider a height through its parent or composeStyle.

PropsTypeDescription
thicknessnumberThe line width in dp.
numberThe line width in dp.
colorColorValueThe line color. The theme when unset.
ColorValueThe line color. The theme when unset.

Badges

One.Android.Badge is a dot, or a count when it has Compose children. One.Android.BadgedBox puts a Badge from its .Badge slot at the top end of its content; with no slot it shows a dot.

BadgeTypeDescription
containerColorColorValueThe badge color.
ColorValueThe badge color.
contentColorColorValueThe count color.
ColorValueThe count color.

Chips

AssistChip, FilterChip, InputChip, and SuggestionChip are the Material 3 chips. Each takes its label in a .Label slot. AssistChip and FilterChip also have .LeadingIcon and .TrailingIcon, InputChip has .Avatar and .TrailingIcon, and SuggestionChip has .Icon.

Every chip takes enabled, onClick, elevation in dp, border ({ width, color }), and colors. A tap calls onClick; set the next selected yourself.

FilterChipTypeDescription
selected (required)booleanWhether the filter is on.
booleanWhether the filter is on.
colorsComposeFilterChipColorsContainer, label, and icon colors, normal and selected.
ComposeFilterChipColorsContainer, label, and icon colors, normal and selected.
InputChipTypeDescription
selectedboolean = falseWhether the chip is selected.
boolean = falseWhether the chip is selected.
colorsComposeInputChipColorsContainer, label, and icon colors, normal and selected.
ComposeInputChipColorsContainer, label, and icon colors, normal and selected.

AssistChip colors are containerColor, labelColor, leadingIconContentColor, and trailingIconContentColor. SuggestionChip colors are containerColor, labelColor, and iconContentColor.

TextField

One.Android.TextField edits text, a string or a native state handle from useNativeState. For a field on every platform, use One.UI.TextInput.

PropsTypeDescription
text (required)string | NativeState<string>The text, or a native state handle.
string | NativeState<string>The text, or a native state handle.
onTextChange (required)(value: string) => voidAn edit, with the new text.
(value: string) => voidAn edit, with the new text.
revisionnumber = 0Increase with a new text to reset it from outside.
number = 0Increase with a new text to reset it from outside.
labelstringThe floating label.
stringThe floating label.
placeholderstringShown while empty.
stringShown while empty.
disabledboolean = falseDims the field and blocks editing.
boolean = falseDims the field and blocks editing.
variantComposeTextFieldVariant = "filled"filled or outlined.
ComposeTextFieldVariant = "filled"filled or outlined.
keyboardTypeComposeTextFieldKeyboardType = "default"default, number, decimal, email, password, phone, or url.
ComposeTextFieldKeyboardType = "default"default, number, decimal, email, password, phone, or url.
secureTextboolean = falseHides the text.
boolean = falseHides the text.
focusedbooleanWhether the field has focus, controlled.
booleanWhether the field has focus, controlled.
focusRevisionnumber = 0Increase with a new focused to apply it.
number = 0Increase with a new focused to apply it.
onFocusChange(focused: boolean) => voidFocus moved.
(focused: boolean) => voidFocus moved.
imeActionComposeTextFieldImeActionThe keyboard action: default, none, go, search, send, previous, next, or done.
ComposeTextFieldImeActionThe keyboard action: default, none, go, search, send, previous, next, or done.
onSubmit() => voidThe keyboard action key was pressed.
() => voidThe keyboard action key was pressed.
maxLengthnumberThe most characters allowed.
numberThe most characters allowed.
multilineboolean = falseAllows line breaks.
boolean = falseAllows line breaks.
capitalizationComposeTextFieldCapitalizationnone, characters, words, or sentences.
ComposeTextFieldCapitalizationnone, characters, words, or sentences.
autoCorrectbooleanWhether the keyboard corrects words.
booleanWhether the keyboard corrects words.
textAlignComposeTextAlignHow the text aligns.
ComposeTextAlignHow the text aligns.

Slider

PropsTypeDescription
value (required)numberThe current value.
numberThe current value.
onValueChange (required)(value: number) => voidA drag, with the new value.
(value: number) => voidA drag, with the new value.
revisionnumber = 0Increase with a new value to reset it from outside.
number = 0Increase with a new value to reset it from outside.
minimumValuenumber = 0The low end of the track.
number = 0The low end of the track.
maximumValuenumber = 1The high end of the track.
number = 1The high end of the track.
lowerLimitnumberThe lowest the thumb may go. The track still spans the full range.
numberThe lowest the thumb may go. The track still spans the full range.
upperLimitnumberThe highest the thumb may go.
numberThe highest the thumb may go.
stepnumber = 0The increment. 0 is continuous.
number = 0The increment. 0 is continuous.
disabledboolean = falseDims the slider and ignores drags.
boolean = falseDims the slider and ignores drags.
colorsReadonly<{ thumbColor?: ColorValue activeTrackColor?: ColorValue inactiveTrackColor?: ColorValue activeTickColor?: ColorValue inactiveTickColor?: ColorValue }>Thumb, track, and tick colors.
Readonly<{ thumbColor?: ColorValue activeTrackColor?: ColorValue inactiveTrackColor?: ColorValue activeTickColor?: ColorValue inactiveTickColor?: ColorValue }>Thumb, track, and tick colors.

DatePicker, TimePicker

One.Android.DatePicker is the Material 3 calendar and One.Android.TimePicker is the clock dial. Both are controlled by a Date. DatePicker changes the calendar day in the device time zone and keeps the time of day. TimePicker changes the hour and minute, keeps the day, and sets seconds to zero.

const [when, setWhen] = useState(() => new Date())
<One.Android.DatePicker
selection={when}
onSelectionChange={setWhen}
minimumDate={new Date(2026, 0, 1)}
/>
<One.Android.TimePicker selection={when} onSelectionChange={setWhen} is24Hour />
DatePickerTypeDescription
selection (required)DateThe selected day.
DateThe selected day.
onSelectionChange (required)(value: Date) => voidA tapped or typed day, with the time of day kept.
(value: Date) => voidA tapped or typed day, with the time of day kept.
revisionnumber = 0Increase with a new value to reset it from outside.
number = 0Increase with a new value to reset it from outside.
minimumDateDateThe earliest selectable day. Earlier days and years are disabled.
DateThe earliest selectable day. Earlier days and years are disabled.
maximumDateDateThe latest selectable day.
DateThe latest selectable day.
variant'picker' | 'input' = 'picker'The calendar grid or a text field.
'picker' | 'input' = 'picker'The calendar grid or a text field.
showModeToggleboolean = trueShows the button that switches variant.
boolean = trueShows the button that switches variant.
colorColorValueTints the title, headline, selected day, and today border.
ColorValueTints the title, headline, selected day, and today border.
colorsComposeDatePickerColorsPer-element colors; these win over color.
ComposeDatePickerColorsPer-element colors; these win over color.
TimePickerTypeDescription
selection (required)DateThe selected time of day.
DateThe selected time of day.
onSelectionChange (required)(value: Date) => voidA new hour or minute, with the day kept.
(value: Date) => voidA new hour or minute, with the day kept.
revisionnumber = 0Increase with a new value to reset it from outside.
number = 0Increase with a new value to reset it from outside.
is24HourbooleanA 24 hour clock. Defaults to the device setting.
booleanA 24 hour clock. Defaults to the device setting.
variant'picker' | 'input' = 'picker'The clock dial or hour and minute fields.
'picker' | 'input' = 'picker'The clock dial or hour and minute fields.
colorColorValueTints the selector, selected field, and dial.
ColorValueTints the selector, selected field, and dial.
colorsComposeTimePickerColorsPer-element colors; these win over color.
ComposeTimePickerColorsPer-element colors; these win over color.

DatePickerDialog and TimePickerDialog take the same props without onSelectionChange and revision. Each opening starts from selection; the confirm button reports the chosen value.

DatePickerDialog, TimePickerDialogTypeDescription
visible (required)booleanWhether the dialog shows.
booleanWhether the dialog shows.
onConfirm (required)(value: Date) => voidThe confirm button, with the chosen value.
(value: Date) => voidThe confirm button, with the chosen value.
onDismiss (required)() => voidDismissed by the button, a tap outside, or back.
() => voidDismissed by the button, a tap outside, or back.
confirmLabelstringThe confirm button title. Defaults to the system OK.
stringThe confirm button title. Defaults to the system OK.
dismissLabelstringThe dismiss button title. Defaults to the system Cancel.
stringThe dismiss button title. Defaults to the system Cancel.

AlertDialog, Dialog

One.Android.AlertDialog shows a confirmation while visible is true. One.Android.Dialog shows its children in a dialog window.

AlertDialogTypeDescription
visible (required)booleanWhether the dialog shows.
booleanWhether the dialog shows.
titlestringThe headline.
stringThe headline.
messagestringThe body text.
stringThe body text.
confirmLabel (required)stringThe confirm button title.
stringThe confirm button title.
dismissLabelstringThe dismiss button title. No button when unset.
stringThe dismiss button title. No button when unset.
onConfirm (required)() => voidThe confirm button was tapped.
() => voidThe confirm button was tapped.
onDismiss (required)() => voidDismissed by the button, a tap outside, or back.
() => voidDismissed by the button, a tap outside, or back.
DialogTypeDescription
visible (required)booleanWhether the dialog shows.
booleanWhether the dialog shows.
onDismiss (required)() => voidA tap outside or back asked to close it.
() => voidA tap outside or back asked to close it.

Progress and loading

ProgressIndicator is circular unless variant says otherwise. LinearProgressIndicator, CircularProgressIndicator, LinearWavyProgressIndicator, and CircularWavyProgressIndicator fix the variant. Leave progress unset for an indeterminate indicator.

ProgressIndicatorTypeDescription
variantComposeProgressVariant = "circular"linear, circular, linearWavy, or circularWavy.
ComposeProgressVariant = "circular"linear, circular, linearWavy, or circularWavy.
progressnumber | nullFrom 0 to 1. Unset spins.
number | nullFrom 0 to 1. Unset spins.
colorColorValueThe indicator color.
ColorValueThe indicator color.
trackColorColorValueThe track color.
ColorValueThe track color.
strokeCapComposeProgressStrokeCapround, butt, or square. Linear and circular.
ComposeProgressStrokeCapround, butt, or square. Linear and circular.
gapSizenumberThe gap between indicator and track, in dp.
numberThe gap between indicator and track, in dp.
strokeWidthnumberThe line width, in dp. Circular.
numberThe line width, in dp. Circular.
drawStopIndicatorComposeProgressStopIndicatorThe end dot of a determinate linear bar: { color, strokeCap, stopSize }.
ComposeProgressStopIndicatorThe end dot of a determinate linear bar: { color, strokeCap, stopSize }.
stopSizenumberThe end dot size, in dp. Linear wavy.
numberThe end dot size, in dp. Linear wavy.
amplitudenumberThe wave height. Wavy.
numberThe wave height. Wavy.
wavelengthnumberThe wave length, in dp. Wavy.
numberThe wave length, in dp. Wavy.
waveSpeednumberHow fast the wave moves. Wavy.
numberHow fast the wave moves. Wavy.

LoadingIndicator and ContainedLoadingIndicator are the Material 3 expressive loading shapes, with progress and color; the contained one adds containerColor.

LoadingIndicatorTypeDescription
progressnumber | nullFrom 0 to 1. Unset animates.
number | nullFrom 0 to 1. Unset animates.
colorColorValueThe shape color.
ColorValueThe shape color.

Edit this page on GitHub.