Summary
When using WindowCompat.setDecorFitsSystemWindows(window, false) (required for Capacitor 8 edge-to-edge support), the native CallContent Compose UI renders behind the Android gesture navigation bar. Participant name labels and network quality indicators at the bottom of video tiles are hidden behind the gesture nav bar.
Root cause
setOverlayContent renders CallContent inside a VideoTheme block without any window inset handling. On Android 10+ with gesture navigation, WindowInsets.navigationBars has a non-zero bottom value, but the Compose content is not padded to account for it.
Proposed fix
Wrap CallContent in a Box with windowInsetsPadding(WindowInsets.navigationBars) in StreamCallPlugin.kt:
// Add imports:
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.windowInsetsPadding
// In setOverlayContent(), wrap CallContent:
Box(modifier = Modifier.windowInsetsPadding(WindowInsets.navigationBars)) {
CallContent(
call = activeCall,
enableInPictureInPicture = false,
onBackPressed = {},
controlsContent = { /* Empty to disable native controls */ },
appBarContent = { /* Empty to disable app bar with stop call button */ },
layout = CallUIController.layoutType.value,
videoRenderer = { ... },
floatingVideoRenderer = { ... }
)
} // end Box
This pushes the entire call UI above the gesture navigation bar so participant labels, network indicators, and other bottom-anchored elements remain visible and tappable.
Tested on
- Android 15 with gesture navigation (3-button nav bar height = 0, gesture nav bar height ≈ 48dp)
- Capacitor 8 with
WindowCompat.setDecorFitsSystemWindows(window, false)
Workaround
Currently applying this change via patch-package on our end.
Summary
When using
WindowCompat.setDecorFitsSystemWindows(window, false)(required for Capacitor 8 edge-to-edge support), the nativeCallContentCompose UI renders behind the Android gesture navigation bar. Participant name labels and network quality indicators at the bottom of video tiles are hidden behind the gesture nav bar.Root cause
setOverlayContentrendersCallContentinside aVideoThemeblock without any window inset handling. On Android 10+ with gesture navigation,WindowInsets.navigationBarshas a non-zero bottom value, but the Compose content is not padded to account for it.Proposed fix
Wrap
CallContentin aBoxwithwindowInsetsPadding(WindowInsets.navigationBars)inStreamCallPlugin.kt:This pushes the entire call UI above the gesture navigation bar so participant labels, network indicators, and other bottom-anchored elements remain visible and tappable.
Tested on
WindowCompat.setDecorFitsSystemWindows(window, false)Workaround
Currently applying this change via
patch-packageon our end.