Klasse NavigationSplitView

Alle implementierten Schnittstellen:
PointerInterface

public class NavigationSplitView extends Widget
A widget presenting sidebar and content side by side or as a navigation view.

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

`AdwNavigationSplitView` has two [class@NavigationPage] children: sidebar and
content, and displays them side by side.

When [property@NavigationSplitView:collapsed] is set to `TRUE`, it instead
puts both children inside an [class@NavigationView]. The
[property@NavigationSplitView:show-content] controls which child is visible
while collapsed.

See also [class@OverlaySplitView].

`AdwNavigationSplitView` is typically used together with an [class@Breakpoint]
setting the `collapsed` property to `TRUE` on small widths, as follows:

```xml
<object class="AdwWindow">
<property name="width-request">280</property>
<property name="height-request">200</property>
<property name="default-width">800</property>
<property name="default-height">800</property>
<child>
<object class="AdwBreakpoint">
<condition>max-width: 400sp</condition>
<setter object="split_view" property="collapsed">True</setter>
</object>
</child>
<property name="content">
<object class="AdwNavigationSplitView" id="split_view">
<property name="sidebar">
<object class="AdwNavigationPage">
<property name="title" translatable="yes">Sidebar</property>
<property name="child">
<!-- ... -->
</property>
</object>
</property>
<property name="content">
<object class="AdwNavigationPage">
<property name="title" translatable="yes">Content</property>
<property name="child">
<!-- ... -->
</property>
</object>
</property>
</object>
</property>
</object>
```

## Sizing

When not collapsed, `AdwNavigationSplitView` changes the sidebar width
depending on its own width.

If possible, it tries to allocate a fraction of the total width, controlled
with the [property@NavigationSplitView:sidebar-width-fraction] property.

The sidebar also has minimum and maximum sizes, controlled with the
[property@NavigationSplitView:min-sidebar-width] and
[property@NavigationSplitView:max-sidebar-width] properties.

The minimum and maximum sizes are using the length unit specified with the
[property@NavigationSplitView:sidebar-width-unit].

By default, sidebar is using 25% of the total width, with 180sp as the
minimum size and 280sp as the maximum size.

## Header Bar Integration

When used inside `AdwNavigationSplitView`, [class@HeaderBar] will
automatically hide the window buttons in the middle.

When collapsed, it also displays a back button for the content widget, as
well as the page titles. See [class@NavigationView] documentation for details.

## Actions

`AdwNavigationSplitView` defines the same actions as `AdwNavigationView`, but
they can be used even when the split view is not collapsed:

- `navigation.push` takes a string parameter specifying the tag of the page
to push. If it matches the tag of the content widget, it sets
[property@NavigationSplitView:show-content] to `TRUE`.

- `navigation.pop` doesn't take any parameters and sets
[property@NavigationSplitView:show-content] to `FALSE`.

## `AdwNavigationSplitView` as `GtkBuildable`

The `AdwNavigationSplitView` implementation of the [iface@Gtk.Buildable]
interface supports setting the sidebar widget by specifying “sidebar” as the
“type” attribute of a `<child>` element, Specifying “content” child type or
omitting it results in setting the content widget.

## CSS nodes

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

When collapsed, it contains a child node with the name `navigation-view`
containing both children.

```
navigation-split-view
╰── navigation-view
├── [sidebar child]
╰── [content child]
```

When not collapsed, it contains two nodes with the name `widget`, one with
the `.sidebar-pane` style class, the other one with `.content-view` style
class, containing the sidebar and content children respectively.

```
navigation-split-view
├── widget.sidebar-pane
│ ╰── [sidebar child]
╰── widget.content-pane
╰── [content child]
```

## Accessibility

`AdwNavigationSplitView` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.

https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.NavigationSplitView.html

  • Konstruktordetails

    • NavigationSplitView

      public NavigationSplitView(PointerContainer pointer)
    • NavigationSplitView

      public NavigationSplitView()
      Creates a new `AdwNavigationSplitView`.
  • Methodendetails

    • getClassHandler

      public static ClassHandler getClassHandler()
    • getCollapsed

      public boolean getCollapsed()
      Gets whether @self is collapsed.
      Gibt zurück:
      whether @self is collapsed
    • getContent

      public NavigationPage getContent()
      Sets the content widget for @self.
      Gibt zurück:
      the content widget
    • getMaxSidebarWidth

      public double getMaxSidebarWidth()
      Gets the maximum sidebar width for @self.
      Gibt zurück:
      the maximum width
    • getMinSidebarWidth

      public double getMinSidebarWidth()
      Gets the minimum sidebar width for @self.
      Gibt zurück:
      the minimum width
    • getShowContent

      public boolean getShowContent()
      Gets which page is visible when @self is collapsed.
      Gibt zurück:
      whether to show content when collapsed
    • getSidebar

      public NavigationPage getSidebar()
      Gets the sidebar widget for @self.
      Gibt zurück:
      the sidebar widget
    • getSidebarPosition

      public int getSidebarPosition()
      Gets the sidebar position for @self.
      Gibt zurück:
      the sidebar position for @self
    • getSidebarWidthFraction

      public double getSidebarWidthFraction()
      Gets the preferred sidebar width fraction for @self.
      Gibt zurück:
      the preferred width fraction
    • getSidebarWidthUnit

      public int getSidebarWidthUnit()
      Gets the length unit for minimum and maximum sidebar widths.
      Gibt zurück:
      the length unit
    • setCollapsed

      public void setCollapsed(boolean collapsed)
      Sets whether @self is collapsed.

      When collapsed, the children are put inside an [class@NavigationView],
      otherwise they are displayed side by side.

      The [property@NavigationSplitView:show-content] controls which child is
      visible while collapsed.
      Parameter:
      collapsed - whether @self is collapsed
    • setContent

      public void setContent(@Nullable NavigationPage content)
      Sets the content widget for @self.
      Parameter:
      content - the content widget
    • setMaxSidebarWidth

      public void setMaxSidebarWidth(double width)
      Sets the maximum sidebar width for @self.

      Maximum width is affected by
      [property@NavigationSplitView:sidebar-width-unit].

      The sidebar widget can still be allocated with larger width if its own
      minimum width exceeds it.
      Parameter:
      width - the maximum width
    • setMinSidebarWidth

      public void setMinSidebarWidth(double width)
      Sets the minimum sidebar width for @self.

      Minimum width is affected by
      [property@NavigationSplitView:sidebar-width-unit].

      The sidebar widget can still be allocated with larger width if its own
      minimum width exceeds it.
      Parameter:
      width - the minimum width
    • setShowContent

      public void setShowContent(boolean show_content)
      Sets which page is visible when @self is collapsed.

      If set to `TRUE`, the content widget will be the visible page when
      [property@NavigationSplitView:collapsed] is `TRUE`; otherwise the sidebar
      widget will be visible.

      If the split view is already collapsed, the visible page changes immediately.
      Parameter:
      show_content - whether to show content when collapsed
    • setSidebar

      public void setSidebar(@Nullable NavigationPage sidebar)
      Sets the sidebar widget for @self.
      Parameter:
      sidebar - the sidebar widget
    • setSidebarPosition

      public void setSidebarPosition(int position)
      Sets the sidebar position for @self.

      If set to `GTK_PACK_START`, the sidebar is displayed before the content,
      and the sidebar will be the root page when collapsed.

      If set to `GTK_PACK_END`, the sidebar is displayed after the content,
      and the content will be the root page.
      Parameter:
      position - the new position
    • setSidebarWidthFraction

      public void setSidebarWidthFraction(double fraction)
      Sets the preferred sidebar width as a fraction of the total width of @self.

      The preferred width is additionally limited by
      [property@NavigationSplitView:min-sidebar-width] and
      [property@NavigationSplitView:max-sidebar-width].

      The sidebar widget can be allocated with larger width if its own minimum
      width exceeds the preferred width.
      Parameter:
      fraction - the preferred width fraction
    • setSidebarWidthUnit

      public void setSidebarWidthUnit(int unit)
      Sets the length unit for minimum and maximum sidebar widths.

      See [property@NavigationSplitView:min-sidebar-width] and
      [property@NavigationSplitView:max-sidebar-width].
      Parameter:
      unit - the length unit
    • asAccessible

      public Accessible asAccessible()
      Implements interface Accessible. Call this to get access to interface functions.
      Setzt außer Kraft:
      asAccessible in Klasse Widget
      Gibt zurück:
      Accessible
    • asBuildable

      public Buildable asBuildable()
      Implements interface Buildable. Call this to get access to interface functions.
      Setzt außer Kraft:
      asBuildable in Klasse Widget
      Gibt zurück:
      Buildable
    • asConstraintTarget

      public ConstraintTarget asConstraintTarget()
      Implements interface ConstraintTarget. Call this to get access to interface functions.
      Setzt außer Kraft:
      asConstraintTarget in Klasse Widget
      Gibt zurück:
      ConstraintTarget
    • getTypeID

      public static long getTypeID()
    • getParentTypeID

      public static long getParentTypeID()
    • getTypeSize

      public static TypeSystem.TypeSize getTypeSize()
    • getParentTypeSize

      public static TypeSystem.TypeSize getParentTypeSize()
    • getInstanceSize

      public static int getInstanceSize()