pub struct ScrollArea { /* private fields */ }
Expand description

Add vertical and/or horizontal scrolling to a contained Ui.

egui::ScrollArea::vertical().show(ui, |ui| {
    // Add a lot of widgets here.
});

You can scroll to an element using Response::scroll_to_me, Ui::scroll_to_cursor and Ui::scroll_to_rect.

Implementations

Create a horizontal scroll area.

Create a vertical scroll area.

Create a bi-directional (horizontal and vertical) scroll area.

Create a scroll area where both direction of scrolling is disabled. It’s unclear why you would want to do this.

Create a scroll area where you decide which axis has scrolling enabled. For instance, ScrollAre::new([true, false]) enable horizontal scrolling.

The maximum width of the outer frame of the scroll area.

Use f32::INFINITY if you want the scroll area to expand to fit the surrounding Ui (default).

See also Self::auto_shrink.

The maximum height of the outer frame of the scroll area.

Use f32::INFINITY if you want the scroll area to expand to fit the surrounding Ui (default).

See also Self::auto_shrink.

The minimum width of a horizontal scroll area which requires scroll bars.

The ScrollArea will only become smaller than this if the content is smaller than this (and so we don’t require scroll bars).

Default: 64.0.

The minimum height of a vertical scroll area which requires scroll bars.

The ScrollArea will only become smaller than this if the content is smaller than this (and so we don’t require scroll bars).

Default: 64.0.

If false (default), the scroll bar will be hidden when not needed/ If true, the scroll bar will always be displayed even if not needed.

A source for the unique Id, e.g. .id_source("second_scroll_area") or .id_source(loop_index).

Set the horizontal and vertical scroll offset position.

See also: Self::vertical_scroll_offset, Self::horizontal_scroll_offset, Ui::scroll_to_cursor and Response::scroll_to_me

Set the vertical scroll offset position.

See also: Self::scroll_offset, Ui::scroll_to_cursor and Response::scroll_to_me

Set the horizontal scroll offset position.

See also: Self::scroll_offset, Ui::scroll_to_cursor and Response::scroll_to_me

Turn on/off scrolling on the horizontal axis.

Turn on/off scrolling on the vertical axis.

Turn on/off scrolling on the horizontal/vertical axes.

Control the scrolling behavior If true (default), the scroll area will respond to user scrolling If false, the scroll area will not respond to user scrolling

This can be used, for example, to optionally freeze scrolling while the user is inputing text in a TextEdit widget contained within the scroll area.

This controls both scrolling directions.

For each axis, should the containing area shrink if the content is small?

If true, egui will add blank space outside the scroll area. If false, egui will add blank space inside the scroll area.

Default: [true; 2].

The scroll handle will stick to the rightmost position even while the content size changes dynamically. This can be useful to simulate text scrollers coming in from right hand side. The scroll handle remains stuck until user manually changes position. Once “unstuck” it will remain focused on whatever content viewport the user left it on. If the scroll handle is dragged all the way to the right it will again become stuck and remain there until manually pulled from the end position.

The scroll handle will stick to the bottom position even while the content size changes dynamically. This can be useful to simulate terminal UIs or log/info scrollers. The scroll handle remains stuck until user manually changes position. Once “unstuck” it will remain focused on whatever content viewport the user left it on. If the scroll handle is dragged to the bottom it will again become stuck and remain there until manually pulled from the end position.

Show the ScrollArea, and add the contents to the viewport.

If the inner area can be very long, consider using Self::show_rows instead.

Efficiently show only the visible part of a large number of rows.

let text_style = egui::TextStyle::Body;
let row_height = ui.text_style_height(&text_style);
// let row_height = ui.spacing().interact_size.y; // if you are adding buttons instead of labels.
let total_rows = 10_000;
egui::ScrollArea::vertical().show_rows(ui, row_height, total_rows, |ui, row_range| {
    for row in row_range {
        let text = format!("Row {}/{}", row + 1, total_rows);
        ui.label(text);
    }
});

This can be used to only paint the visible part of the contents.

add_contents is given the viewport rectangle, which is the relative view of the content. So if the passed rect has min = zero, then show the top left content (the user has not scrolled).

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.