NavigationView


Object Hierarchy:

Adw.NavigationView Adw.NavigationView Adw.NavigationView Gtk.Widget Gtk.Widget Gtk.Widget->Adw.NavigationView GLib.InitiallyUnowned GLib.InitiallyUnowned GLib.InitiallyUnowned->Gtk.Widget GLib.Object GLib.Object GLib.Object->GLib.InitiallyUnowned Gtk.Accessible Gtk.Accessible Gtk.Accessible->Adw.NavigationView Gtk.Accessible->Gtk.Widget Gtk.Buildable Gtk.Buildable Gtk.Buildable->Adw.NavigationView Gtk.Buildable->Gtk.Widget Gtk.ConstraintTarget Gtk.ConstraintTarget Gtk.ConstraintTarget->Adw.NavigationView Gtk.ConstraintTarget->Gtk.Widget Adw.Swipeable Adw.Swipeable Adw.Swipeable->Adw.NavigationView

Description:

[ CCode ( type_id = "adw_navigation_view_get_type ()" ) ]
[ Version ( since = "1.4" ) ]
public sealed class NavigationView : Widget, Swipeable, Accessible, Buildable, ConstraintTarget

A page-based navigation container.

<picture> <source srcset="navigation-view-dark.png" media="(prefers-color-scheme: dark)"> <img src="navigation-view.png" alt="navigation-view"> </picture>

`AdwNavigationView` presents one child at a time, similar to [class@Gtk.Stack].

`AdwNavigationView` can only contain [class@NavigationPage] children.

It maintains a navigation stack that can be controlled with [method@NavigationView.push] and [method@NavigationView.pop]. The whole navigation stack can also be replaced using [method@NavigationView.replace].

`AdwNavigationView` allows to manage pages statically or dynamically.

Static pages can be added using the [method@NavigationView.add] method. The `AdwNavigationView` will keep a reference to these pages, but they aren't accessible to the user until [method@NavigationView.push] is called (except for the first page, which is pushed automatically). Use the [ method@NavigationView.remove] method to remove them. This is useful for applications that have a small number of unique pages and just need navigation between them.

Dynamic pages are automatically destroyed once they are popped off the navigation stack. To add a page like this, push it using the [ method@NavigationView.push] method without calling [method@NavigationView.add] first.

Tags

Static pages, as well as any pages in the navigation stack, can be accessed by their [property@NavigationPage:tag]. For example, [ method@NavigationView.push_by_tag] can be used to push a static page that's not in the navigation stack without having to keep a reference to it manually.

Header Bar Integration

When used inside `AdwNavigationView`, [class@HeaderBar] will automatically display a back button that can be used to go back to the previous page when possible. The button also has a context menu, allowing to pop multiple pages at once, potentially across multiple navigation views.

Set [property@HeaderBar:show-back-button] to `FALSE` to disable this behavior if it's unwanted.

`AdwHeaderBar` will also display the title of the `AdwNavigationPage` it's placed into, so most applications shouldn't need to customize it at all.

Shortcuts and Gestures

`AdwNavigationView` supports the following shortcuts for going to the previous page:

  • <kbd>Escape</kbd> (unless [property@NavigationView:pop-on-escape] is set to `FALSE`)
  • <kbd>Alt</kbd>+<kbd>←</kbd>
  • Back mouse button

Additionally, it supports interactive gestures:

  • One-finger swipe towards the right on touchscreens
  • Scrolling towards the right on touchpads (usually two-finger swipe)

These gestures have transitions enabled regardless of the [property@NavigationView:animate-transitions] value.

Applications can also enable shortcuts for pushing another page onto the navigation stack via connecting to the [signal@NavigationView: AdwNavigationView:get-next-page] signal, in that case the following shortcuts are supported:

  • <kbd>Alt</kbd>+<kbd>→</kbd>
  • Forward mouse button
  • Swipe/scrolling towards the left

For right-to-left locales, the gestures and shortcuts are reversed.

[property@NavigationPage:can-pop] can be used to disable them, along with the header bar back buttons.

Actions

`AdwNavigationView` defines actions for controlling the navigation stack. actions for controlling the navigation stack:

  • `navigation.push` takes a string parameter specifying the tag of the page to push, and is equivalent to calling [ method@NavigationView.push_by_tag].
  • `navigation.pop` doesn't take any parameters and pops the current page from the navigation stack, equivalent to calling [ method@NavigationView.pop].

`AdwNavigationView` as `GtkBuildable`

`AdwNavigationView` allows to add pages as children, equivalent to using the [method@NavigationView.add] method.

Example of an `AdwNavigationView` UI definition:

```xml <object class="AdwNavigationView"> <child> <object class="AdwNavigationPage"> <property name="title" translatable="yes">Page 1</property> <property name="child"> <object class="AdwToolbarView"> <child type="top"> <object class="AdwHeaderBar"/> </child> <property name="content"> <object class="GtkButton"> <property name="label" translatable="yes">Open Page 2</property> <property name="halign">center</property> <property name="valign">center</property> <property name="action-name">navigation.push</property> <property name="action-target" >'page-2'</property> <style> <class name="pill"/> </style> </object> </property> </object> </property> </object> </child> <child> <object class="AdwNavigationPage"> <property name="title" translatable="yes">Page 2</property> <property name="tag">page-2</property> <property name="child"> <object class="AdwToolbarView"> <child type="top"> <object class="AdwHeaderBar"/> </child> <property name="content"> <!-- ... --> </property> </object> </property> </object> </child> </object> ```

<picture> <source srcset="navigation-view-example-dark.png" media="(prefers-color-scheme: dark)"> <img src="navigation-view-example.png" alt="navigation-view-example"> </picture>

CSS nodes

`AdwNavigationView` has a single CSS node with the name `navigation-view`.

Accessibility

`AdwNavigationView` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.


Namespace: Adw
Package: libadwaita-1

Content:

Properties:

Creation methods:

Methods:

Signals:

Inherited Members:

All known members inherited from class Gtk.Widget
All known members inherited from interface Adw.Swipeable