app: use ShortNavigationBar and fix insets

- Replace Material 3 NavigationBar with ShortNavigationBar and
  ShortNavigationBarItem for a more compact bottom bar.
- Set contentWindowInsets to zero on the root Scaffold so status bar
  insets are passed down to child screens' TopAppBars.
- Consume innerPadding on HorizontalPager to prevent nested Scaffolds
  from duplicating bottom system navigation insets.

Assisted-by: Gemini 3.8 Flash
This commit is contained in:
topjohnwu committed 2026-09-03 01:43:17 -07:00
1 parent c2f8da60f6
commit 482cde7aa4
1 file changed
+9 -8
@@ -2,15 +2,16 @@ package com.topjohnwu.magisk.ui
import androidx.activity.ComponentActivity
import androidx.activity.compose.LocalActivity
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.NavigationBar
import androidx.compose.material3.NavigationBarItem
import androidx.compose.material3.Scaffold
import androidx.compose.material3.ShortNavigationBar
import androidx.compose.material3.ShortNavigationBarItem
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
@@ -72,12 +73,11 @@ fun MainScreen(
Scaffold(
modifier = modifier.fillMaxSize(),
contentWindowInsets = WindowInsets(0, 0, 0, 0),
bottomBar = {
NavigationBar(
containerColor = MaterialTheme.colorScheme.surfaceContainer,
) {
ShortNavigationBar {
visibleTabs.forEachIndexed { index, tab ->
NavigationBarItem(
ShortNavigationBarItem(
selected = pagerState.currentPage == index,
onClick = { scope.launch { pagerState.animateScrollToPage(index) } },
icon = {
@@ -96,7 +96,8 @@ fun MainScreen(
state = pagerState,
modifier = Modifier
.fillMaxSize()
.padding(bottom = innerPadding.calculateBottomPadding()),
.padding(innerPadding)
.consumeWindowInsets(innerPadding),
beyondViewportPageCount = visibleTabs.size - 1,
userScrollEnabled = true,
) { page ->