@@ -3,17 +3,21 @@ package com.github.jing332.tts_server_android.compose
33import androidx.compose.foundation.ExperimentalFoundationApi
44import androidx.compose.foundation.layout.ExperimentalLayoutApi
55import androidx.compose.foundation.layout.fillMaxSize
6+ import androidx.compose.foundation.layout.fillMaxWidth
67import androidx.compose.foundation.layout.padding
78import androidx.compose.foundation.pager.HorizontalPager
89import androidx.compose.foundation.pager.rememberPagerState
9- import androidx.compose.material3.NavigationBar
10+ import androidx.compose.material3.BottomAppBar
11+ import androidx.compose.material3.BottomAppBarDefaults
12+ import androidx.compose.material3.ExperimentalMaterial3Api
1013import androidx.compose.material3.NavigationBarDefaults
1114import androidx.compose.material3.NavigationBarItem
1215import androidx.compose.material3.Scaffold
1316import androidx.compose.material3.Text
1417import androidx.compose.runtime.Composable
1518import androidx.compose.runtime.rememberCoroutineScope
1619import androidx.compose.ui.Modifier
20+ import androidx.compose.ui.input.nestedscroll.nestedScroll
1721import androidx.compose.ui.res.stringResource
1822import com.github.jing332.compose.widgets.InitSystemNavigation
1923import com.github.jing332.tts_server_android.compose.forwarder.systts.SystemTtsForwarderScreen
@@ -23,37 +27,46 @@ import com.github.jing332.tts_server_android.compose.systts.TtsLogScreen
2327import com.github.jing332.tts_server_android.compose.systts.list.ListManagerScreen
2428import kotlinx.coroutines.launch
2529
26- @OptIn(ExperimentalFoundationApi ::class , ExperimentalLayoutApi ::class )
30+ @OptIn(
31+ ExperimentalFoundationApi ::class , ExperimentalLayoutApi ::class ,
32+ ExperimentalMaterial3Api ::class
33+ )
2734@Composable
2835fun MainPager (sharedVM : SharedViewModel ) {
2936 val pagerState = rememberPagerState { PagerDestination .routes.size }
3037 val scope = rememberCoroutineScope()
3138
3239 MigrationTips ()
40+ val scrollBehavior = BottomAppBarDefaults .exitAlwaysScrollBehavior()
3341
3442 Scaffold (
43+ modifier = Modifier .nestedScroll(scrollBehavior.nestedScrollConnection),
3544 bottomBar = {
3645 val containerColor = NavigationBarDefaults .containerColor
3746 InitSystemNavigation (containerColor)
38- NavigationBar (containerColor = containerColor) {
39- for (destination in PagerDestination .routes) {
40- val isSelected = pagerState.currentPage == destination.index
41- NavigationBarItem (
42- selected = isSelected,
43- alwaysShowLabel = false ,
44- onClick = {
45- scope.launch {
46- pagerState.animateScrollToPage(destination.index)
47+ BottomAppBar (
48+ modifier = Modifier .fillMaxWidth(),
49+ containerColor = containerColor,
50+ scrollBehavior = scrollBehavior,
51+ actions = {
52+ for (destination in PagerDestination .routes) {
53+ val isSelected = pagerState.currentPage == destination.index
54+ NavigationBarItem (
55+ selected = isSelected,
56+ alwaysShowLabel = false ,
57+ onClick = {
58+ scope.launch {
59+ pagerState.animateScrollToPage(destination.index)
60+ }
61+ },
62+ icon = destination.icon,
63+ label = {
64+ Text (stringResource(id = destination.strId))
4765 }
48- },
49- icon = destination.icon,
50- label = {
51- Text (stringResource(id = destination.strId))
52- }
53- )
66+ )
67+ }
5468 }
55- }
56-
69+ )
5770
5871 }
5972 ) { paddingValues ->
0 commit comments