Struct egui::containers::ScrollArea[][src]

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

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

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

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.

👎 Deprecated:

Use pub ScrollArea::vertical() instead

Will make the area be as high as it is allowed to be (i.e. fill the Ui it is in)

👎 Deprecated:

Use pub ScrollArea::vertical().max_height(…) instead

Use f32::INFINITY if you want the scroll area to expand to fit the surrounding Ui

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.

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 vertical scroll offset position.

See also: 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.fonts()[text_style].row_height();
// let row_height = ui.spacing().interact_size.y; // if you are adding buttons instead of labels.
let num_rows = 10_000;
egui::ScrollArea::vertical().show_rows(ui, row_height, num_rows, |ui, row_range| {
    for row in row_range {
        let text = format!("Row {}/{}", row + 1, num_rows);
        ui.label(text);
    }
});

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

add_contents is past the viewport, 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

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

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.