Skip to main content

SemanticsSpec

Type Alias SemanticsSpec 

Source
pub type SemanticsSpec = SemanticsConfiguration;
Expand description

One value that says what a screen reader reads for a node, built up with the methods below and handed to Modifier::semantics_spec.

Compose has no such value: it takes a receiver lambda, which Kotlin makes read well and Rust has no match for. SemanticsSpec::new().content_description("Save") reads better than |config| config.content_description = Some("Save".into()), it is one chain element rather than one per property, and two specs can be compared. The closure form stays as Modifier::semantics for parity.

Aliased Type§

pub struct SemanticsSpec {
Show 35 fields pub content_description: Option<String>, pub state_description: Option<String>, pub on_click_label: Option<String>, pub on_long_click: Option<SemanticsLongClick>, pub on_long_click_label: Option<String>, pub role: Option<SemanticsWidgetRole>, pub selected: Option<bool>, pub toggled: Option<bool>, pub enabled: bool, pub is_clickable: bool, pub is_editable_text: bool, pub text: Option<String>, pub text_selection: Option<TextRange>, pub custom_actions: Vec<SemanticsCustomAction>, pub canvas_children: Vec<CanvasSemanticsNode>, pub is_modal: bool, pub hidden: bool, pub merge_descendants: bool, pub selectable_group: bool, pub pane_title: Option<String>, pub error: Option<String>, pub password: bool, pub traversal_index: f32, pub live_region: Option<LiveRegionMode>, pub progress: Option<ProgressBarRangeInfo>, pub set_progress: Option<SemanticsSetProgress>, pub set_text: Option<SemanticsSetText>, pub expand: Option<SemanticsExpand>, pub dismiss: Option<SemanticsDismiss>, pub collapse: Option<SemanticsExpand>, pub vertical_scroll: Option<ScrollAxisRange>, pub horizontal_scroll: Option<ScrollAxisRange>, pub scroll_by: Option<SemanticsScrollBy>, pub scroll_to_index: Option<SemanticsScrollToIndex>, pub collection: Option<CollectionInfo>,
}

Fields§

§content_description: Option<String>§state_description: Option<String>

Compose’s stateDescription.

§on_click_label: Option<String>

Compose’s onClick(label = …); implies clickable.

§on_long_click: Option<SemanticsLongClick>

What this control does when a screen reader asks for its long press. Compose’s onLongClick.

§on_long_click_label: Option<String>

What the long press does, as a verb phrase a reader reads out: “Remove receipt”. Compose’s onLongClick(label = …).

§role: Option<SemanticsWidgetRole>

Compose’s Role.

§selected: Option<bool>§toggled: Option<bool>§enabled: bool§is_clickable: bool§is_editable_text: bool§text: Option<String>

The text an editable field holds, read as its value. Compose’s editableText.

§text_selection: Option<TextRange>§custom_actions: Vec<SemanticsCustomAction>§canvas_children: Vec<CanvasSemanticsNode>

Controls this node drew itself instead of laying out. See CanvasSemanticsNode.

§is_modal: bool

Whether this node takes over the screen: everything outside it is inert, and a screen reader keeps its traversal inside.

§hidden: bool

Whether a screen reader skips this node and everything under it: a decorative image, or a placeholder drawn under a named field. Compose’s hideFromAccessibility.

§merge_descendants: bool

Whether a screen reader takes this node and the text under it as one stop, the way it does for a button: a row whose name, count and price belong together. Compose’s mergeDescendants.

§selectable_group: bool

Whether the selectable controls under this node form one group, so a screen reader says which of how many a tab or a radio button is. Compose’s selectableGroup.

§pane_title: Option<String>

The title of the screen or pane this node is the root of, read out when the app moves to it. Compose’s paneTitle.

§error: Option<String>

Why the control’s content is wrong, read after its state: “invalid, the amount needs a number”. Compose’s error.

§password: bool

Whether this field holds a secret, so no screen reader reads its text out and no platform mirror carries it. Compose’s password.

§traversal_index: f32

Where a screen reader visits this node among the ones beside it: a smaller number comes first, and nodes left at zero keep the order the app laid them out in. Compose’s traversalIndex.

§live_region: Option<LiveRegionMode>

Compose’s liveRegion. When set, a screen reader reads this node again whenever its text changes, without the user moving to it.

§progress: Option<ProgressBarRangeInfo>

Compose’s progressBarRangeInfo. A control with it is adjustable: a screen reader offers its own way to move the value.

§set_progress: Option<SemanticsSetProgress>

What the control does when a screen reader moves its value. Compose’s setProgress.

§set_text: Option<SemanticsSetText>

What this field does when a screen reader or a voice tool hands it text. Compose’s setText.

§expand: Option<SemanticsExpand>

What this control does when a screen reader asks it to open. A control that says so reads as closed. Compose’s expand.

§dismiss: Option<SemanticsDismiss>

What this control does when a screen reader asks to send it away: a row a sighted person swipes off, a sheet a sighted person taps outside of. Compose’s dismiss.

§collapse: Option<SemanticsExpand>

What this control does when a screen reader asks it to close. A control that says so reads as open. Compose’s collapse.

§vertical_scroll: Option<ScrollAxisRange>

How far this container scrolled up and down. Compose’s verticalScrollAxisRange.

§horizontal_scroll: Option<ScrollAxisRange>

How far this container scrolled left and right. Compose’s horizontalScrollAxisRange.

§scroll_by: Option<SemanticsScrollBy>

What this container does when a screen reader pages it. Compose’s scrollBy.

§scroll_to_index: Option<SemanticsScrollToIndex>

What this list does when a screen reader asks for the row at an index, so a reader reaches row 300 without paging to it. Compose’s scrollToIndex.

§collection: Option<CollectionInfo>

How many rows and columns this list holds. Compose’s collectionInfo.