System navigation bar does not follow app's theme on Android 13 #2208
Unanswered
crazygolem
asked this question in
Bugs
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
On Android 13, the system navigation bar is themed based on the system's theme (and specifically the dark theme option), and not based on the app's.
This is a bit annoying to me, because I prefer to have my system in bright theme, but for reading articles I like to have Capy Reader in dark theme, and I always have the bright white bar at the bottom which defeats the purpose of the dark theme.
To reproduce the issue, set the system theme to bright/dark, and in Capy Reader switch the theme between system, bright and dark.
Observe the bottom navigation bar (or buttons) not switching color while the rest of the Capy Reader UI switches.
With the system in bright theme:
Screen_recording_20260728_214032.mp4
With the system in dark theme:
Screen_recording_20260728_214147.mp4
Note that with the API 33 emulator in Android Studio, the navigation bar was always staying black, irrespective of the system's theme.
Versions
Capy Reader: 2026.07.1212
Android: 13 (supposedly relatively close to stock android)
Quick Analysis
It looks like this was introduced with #1373 to fix an issue with edge-to-edge on MIUI, but effectively breaks the app's theming on Android 13 (API 33).
After a summary check of the code around the
enableEdgeToEdge()call inBaseActivity.kt, it looks like the edge-to-edge feature gating is too restrictive, or not specific enough to only target MIUI:AFAIK
enableEdgeToEdge()supports API levels down to 21, well below the app's min supported SDK, so the feature gating on the OS' version is unnecessary; it it just so happen to cover the Android versions that MIUI is based on so it coincidentally fixes the issue for MIUI...isEdgeToEdgeAvailableis also called inStatusBarColorListenerinTheme.kt, but I don't see an obvious issue with the code. The documentation ofwindow.statusBarColormentions some flags that must or must not be set for the code to take effect, maybe there is an issue with that that could be investigated if you still want to broadly disable edge-to-edge for Android < 14All reactions