@@ -65,12 +65,14 @@ import androidx.compose.material3.NavigationDrawerItem
6565import androidx.compose.material3.NavigationDrawerItemDefaults
6666import androidx.compose.material3.Scaffold
6767import androidx.compose.material3.Text
68+ import androidx.compose.material3.TopAppBarDefaults
6869import androidx.compose.material3.rememberDrawerState
6970import androidx.compose.runtime.Composable
7071import androidx.compose.runtime.getValue
7172import androidx.compose.runtime.rememberCoroutineScope
7273import androidx.compose.ui.Modifier
7374import androidx.compose.ui.graphics.vector.ImageVector
75+ import androidx.compose.ui.input.nestedscroll.nestedScroll
7476import androidx.compose.ui.platform.LocalContext
7577import androidx.compose.ui.res.stringResource
7678import androidx.compose.ui.unit.dp
@@ -101,7 +103,7 @@ import no.nordicsemi.android.common.theme.NordicTheme
101103import no.nordicsemi.android.common.ui.view.NavigationDrawerDividerDefaults
102104import no.nordicsemi.android.common.ui.view.NavigationDrawerTitle
103105import no.nordicsemi.android.common.ui.view.NavigationDrawerTitleDefaults
104- import no.nordicsemi.android.common.ui.view.NordicAppBar
106+ import no.nordicsemi.android.common.ui.view.NordicLargeAppBar
105107import no.nordicsemi.android.common.ui.view.NordicLogo
106108
107109data class Item (val title : String , val destinationId : DestinationId <Unit , * >, val icon : ImageVector )
@@ -139,16 +141,11 @@ class MainActivity : NordicActivity() {
139141 val drawerState = rememberDrawerState(DrawerValue .Closed )
140142 val scope = rememberCoroutineScope()
141143
142- BackHandler (
143- enabled = drawerState.isOpen,
144- ) {
145- scope.launch { drawerState.close() }
146- }
147-
148144 ModalNavigationDrawer (
149145 drawerState = drawerState,
150146 drawerContent = {
151147 ModalDrawerSheet (
148+ drawerState = drawerState,
152149 modifier = Modifier
153150 .fillMaxHeight()
154151 .verticalScroll(rememberScrollState()),
@@ -210,9 +207,11 @@ class MainActivity : NordicActivity() {
210207 ) {
211208 val currentDestination by navigator.currentDestination()
212209 .collectAsStateWithLifecycle()
210+ val scrollBehavior = TopAppBarDefaults .exitUntilCollapsedScrollBehavior()
213211 Scaffold (
212+ modifier = Modifier .nestedScroll(scrollBehavior.nestedScrollConnection),
214213 topBar = {
215- NordicAppBar (
214+ NordicLargeAppBar (
216215 title = { Text (text = stringResource(id = R .string.title_main)) },
217216 showBackButton = listOf (Hello , HelloDialog ).contains(
218217 currentDestination
@@ -221,6 +220,7 @@ class MainActivity : NordicActivity() {
221220 onHamburgerButtonClick = {
222221 scope.launch { drawerState.open() }
223222 },
223+ scrollBehavior = scrollBehavior,
224224 actions = {
225225 val context = LocalContext .current
226226 LoggerAppBarIcon (
@@ -267,6 +267,12 @@ class MainActivity : NordicActivity() {
267267 }
268268 }
269269 ) { padding ->
270+ // This is a workaround for the issue with the back button going back
271+ // to the previous tab instead of closing the drawer.
272+ // BackHandler(
273+ // enabled = drawerState.isOpen,
274+ // onBack = { scope.launch { drawerState.close() } }
275+ // )
270276 NavigationView (
271277 destinations = listOf (
272278 Tabs with ((FirstTab with MainDestinations ) + (SecondTab with SecondDestinations ) + ThirdDestination ),
0 commit comments