Fix navigation bar overlay in edge-to-edge mode on Android#8454
Fix navigation bar overlay in edge-to-edge mode on Android#8454stormbeforesunsetbee wants to merge 2 commits intoionic-team:mainfrom
Conversation
Added navigation bar visibility handling and adjusted safe area calculations. Updated insets handling for improved layout compatibility.
|
Thanks for your pull request I did test your patch on my Android 13 testing device it worked as intended. See my comment on this issue |
|
Hi, I've been testing it on my physical phone, a Xiaomi Mi 8 with API 10, and on a Pixel 9 with API 35 in an emulator. Everything seems to be working fine, except for one odd thing I've noticed: if I put the app in the background and then return, the footer buttons stop being transparent and become a solid color. This might be a problem with my phone. |
|
@Marius-Romanus @martinreder Thanks a lot for testing, guys! @Marius-Romanus I’ve pushed a new commit to this branch. Please give it a try 😉 @martinreder About the status bar issue, the core SystemBars plugin still needs plugins: {
SystemBars: {
insetsHandling: 'css',
},
StatusBar: {
overlaysWebView: true,
},
} |
|
@stormbeforesunsetbee You were absolutely right. Reintroducing the status-bar plugin fixed the remaining issues for us. Thanks a lot! |
|
37bb5c9 |
Description
The navigation bar now behaves like the status bar:
--safe-area-inset-bottomis injected correctlyWhat changed:
getRootWindowInsets()directly to bypass the consumed inset on API < 30navigation_bar_heightresource on old ROMs where even that isn't reliable yet--safe-area-inset-bottomon all API levels, not just Android 15+onPageCommitVisiblesinceevaluateJavascriptis a no-op before a page loadsrequestApplyInsetson the parent view, not the WebView (that's where the listener lives)handleOnResumeto manage navigation bar appearance on MIUI et al.Change Type
Rationale / Problems Fixed
Google is enforcing edge-to-edge for all apps. We should support it out of the box — no half measures.
Closes #8416 and #8394 (hopefully).
The nav bar was opaque and the WebView stopped above it.
--safe-area-inset-bottomwas never injected on older Android because the bottom inset was always 0 (consumed by an intermediate AppCompat view before reaching our listener).Tests or Reproductions
Tested on Android 8.1 and Android 12.
Platforms Affected
Notes / Comments
Inspired by #8424 — thanks @theproducer! @MisterNox @luisbytes @theproducer @Marius-Romanus @fabiomartino — would love your help testing this, I might have missed something.