Skip to content

Navigation rail in landscape - #87

Merged
punk-kaos merged 1 commit into
JS8Call-improved:masterfrom
tekstrand:navigation-rail
Sep 2, 2026
Merged

Navigation rail in landscape#87
punk-kaos merged 1 commit into
JS8Call-improved:masterfrom
tekstrand:navigation-rail

Conversation

@tekstrand

@tekstrand tekstrand commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

What

  1. Adds a layout-land variant of the main activity layout that puts a NavigationRailView on the left edge
  2. References the nav view as NavigationBarView in the activity and fragments, the superclass the rail and the bottom bar share
  3. Keeps the bottom bar labels always visible via labelVisibilityMode
  4. Swaps the five tab icons to local Material Symbols drawables

Why

  1. Landscape spends horizontal space on navigation and keeps the short screen for content instead of losing a strip to a full width bottom bar.
  2. Both widgets subclass NavigationBarView, so the same code drives either one and nothing else has to care which layout inflated.
  3. The rail always shows labels, so the phone bar now matches instead of hiding them on the unselected tabs.
  4. The final set has no Decodes icon because that tab merges into Monitor later, so it gets a new ic_notes until then.

Test

  1. ./gradlew :app:testDebugUnitTest
  2. ./gradlew :app:assembleDebug installed on Fire HD 10 and Pixel 7 profile emulators. Landscape shows the rail on the left, portrait shows the labeled bottom bar, and tab switching works in both.

Screenshots

Tablet

nav-rail-tablet-portrait nav-rail-tablet-landscape

Phone

nav-rail-phone-landscape nav-rail-phone-portrait

@tekstrand
tekstrand marked this pull request as draft August 28, 2026 17:44
…e main activity layout puts a NavigationRailView on the left edge, so landscape spends horizontal space on navigation and keeps the short screen for content instead of losing a strip to a full-width bottom bar. Portrait keeps the bottom bar, which now always shows its labels via labelVisibilityMode. The activity and fragments reference the nav view as NavigationBarView, the superclass both widgets share, so the same code drives either one.

The five tabs switch from the android system icons to local Material Symbols drawables, tinted from the theme. Decodes gets a new ic_notes: the tab is merged into Monitor by upcoming work, so the final set never drew an icon for it.
@tekstrand tekstrand changed the title Added a navigation rail for tablets in landscape. A new layout-sw600d… Navigation rail in landscape Aug 28, 2026
@tekstrand
tekstrand marked this pull request as ready for review August 28, 2026 17:49
@punk-kaos

Copy link
Copy Markdown
Contributor

This one looks great, I'm going to hold onto it for a short bit as I'm going to try and push out a 1.0 release this week. After that I'll start pulling in changes that target UI upgrades and such like we've been discussing.

@punk-kaos
punk-kaos merged commit a9fbf20 into JS8Call-improved:master Sep 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants