diff --git a/app/src/main/java/io/legado/app/constant/PreferKey.kt b/app/src/main/java/io/legado/app/constant/PreferKey.kt index 04e1d7949..121329c5b 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -185,6 +185,7 @@ object PreferKey { const val containerOpacity = "containerOpacity" const val enableBlur = "enableBlur" const val enableProgressiveBlur = "enableProgressiveBlur" + const val useFlexibleTopAppBar = "useFlexibleTopAppBar" const val cBackground = "colorBackground" const val cBBackground = "colorBottomBackground" const val bgImage = "backgroundImage" diff --git a/app/src/main/java/io/legado/app/ui/about/AboutScreen.kt b/app/src/main/java/io/legado/app/ui/about/AboutScreen.kt index aae01fb9b..a7448e68b 100644 --- a/app/src/main/java/io/legado/app/ui/about/AboutScreen.kt +++ b/app/src/main/java/io/legado/app/ui/about/AboutScreen.kt @@ -19,7 +19,6 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme.colorScheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -34,6 +33,7 @@ import androidx.compose.ui.unit.sp import io.legado.app.R import io.legado.app.constant.AppConst.appInfo import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.SplicedColumnGroup import io.legado.app.ui.widget.components.button.TopbarNavigationButton import io.legado.app.ui.widget.components.card.TextCard @@ -53,7 +53,7 @@ fun AboutScreen( ) { LocalContext.current - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() Scaffold( modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), diff --git a/app/src/main/java/io/legado/app/ui/book/bookmark/AllBookmarkScreen.kt b/app/src/main/java/io/legado/app/ui/book/bookmark/AllBookmarkScreen.kt index 6ce30df5f..302fc5bb0 100644 --- a/app/src/main/java/io/legado/app/ui/book/bookmark/AllBookmarkScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/bookmark/AllBookmarkScreen.kt @@ -28,7 +28,6 @@ import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue @@ -43,6 +42,7 @@ import io.legado.app.data.entities.Bookmark import io.legado.app.ui.widget.CollapsibleHeader import io.legado.app.ui.widget.components.EmptyMessageView import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.SearchBarSection import io.legado.app.ui.widget.components.bookmark.BookmarkEditSheet import io.legado.app.ui.widget.components.bookmark.BookmarkItem @@ -82,7 +82,7 @@ fun AllBookmarkScreen( var editingBookmark by remember { mutableStateOf(null) } var showBottomSheet by remember { mutableStateOf(false) } var pendingExportIsMd by remember { mutableStateOf(false) } - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() val exportLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.OpenDocumentTree() diff --git a/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowScreen.kt b/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowScreen.kt index 499932d11..05e89dd60 100644 --- a/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/explore/ExploreShowScreen.kt @@ -23,7 +23,6 @@ import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width @@ -55,7 +54,6 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.Slider import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.material3.pulltorefresh.PullToRefreshDefaults import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState @@ -72,7 +70,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.nestedscroll.nestedScroll -import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow @@ -129,7 +126,7 @@ fun ExploreShowScreen( val selectedTitle by viewModel.selectedKindTitle.collectAsState() val listState = rememberLazyListState() val gridState = rememberLazyGridState() - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() var showKindSheet by remember { mutableStateOf(false) } val layoutState by viewModel.layoutState.collectAsState() val isGridMode = layoutState == 1 @@ -239,9 +236,7 @@ fun ExploreShowScreen( if (showKindSheet) { GlassModalBottomSheet( - onDismissRequest = { showKindSheet = false }, - modifier = Modifier - .heightIn(max = LocalConfiguration.current.screenHeightDp.dp * 0.72f) + onDismissRequest = { showKindSheet = false } ) { var kindQuery by remember { mutableStateOf("") } diff --git a/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt b/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt index 3cc150b2f..5c325a5d3 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt @@ -32,7 +32,6 @@ import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -49,6 +48,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.legado.app.R import io.legado.app.ui.book.changecover.ChangeCoverDialog import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.button.TopBarButtonVariant import io.legado.app.ui.widget.components.button.TopbarNavigationButton import io.legado.app.ui.widget.components.cover.Cover @@ -65,7 +65,7 @@ fun BookInfoEditScreen( onSave: () -> Unit ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() Scaffold( modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), @@ -278,4 +278,4 @@ fun BookTypeDropdown( } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/readRecord/ReadRecordScreen.kt b/app/src/main/java/io/legado/app/ui/book/readRecord/ReadRecordScreen.kt index d5c57c4a0..e1876d52a 100644 --- a/app/src/main/java/io/legado/app/ui/book/readRecord/ReadRecordScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/readRecord/ReadRecordScreen.kt @@ -46,7 +46,6 @@ import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState @@ -83,6 +82,7 @@ import io.legado.app.data.entities.readRecord.ReadRecordDetail import io.legado.app.ui.widget.components.AnimatedTextLine import io.legado.app.ui.widget.components.EmptyMessageView import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.SearchBarSection import io.legado.app.ui.widget.components.SectionHeader import io.legado.app.ui.widget.components.button.AlertButton @@ -123,7 +123,7 @@ fun ReadRecordScreen( var showSearch by remember { mutableStateOf(false) } var showCalendar by remember { mutableStateOf(false) } val listState = rememberLazyListState() - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() var skipDeleteConfirm by remember { mutableStateOf(false) } var pendingDeleteAction by remember { mutableStateOf<(() -> Unit)?>(null) } @@ -1019,4 +1019,4 @@ fun formatDuring(mss: Long): String { val m = if (minutes > 0) "${minutes}分钟" else "" val s = if (seconds > 0) "${seconds}秒" else "" return if ("$d$h$m$s".isBlank()) "0秒" else "$d$h$m$s" -} +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentScreen.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentScreen.kt index bb834e183..3750d048c 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentScreen.kt @@ -49,7 +49,6 @@ import androidx.compose.material3.Text import androidx.compose.material3.TooltipAnchorPosition import androidx.compose.material3.TooltipBox import androidx.compose.material3.TooltipDefaults -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.animateFloatingActionButton import androidx.compose.material3.rememberTooltipState import androidx.compose.runtime.Composable @@ -69,6 +68,7 @@ import io.legado.app.data.entities.SearchContentHistory import io.legado.app.ui.widget.components.AnimatedText import io.legado.app.ui.widget.components.EmptyMessageView import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.SearchBarSection import io.legado.app.ui.widget.components.button.SmallAnimatedActionButton import io.legado.app.ui.widget.components.button.SmallIconButton @@ -99,7 +99,7 @@ fun SearchContentScreen( val durChapterIndex = uiState.durChapterIndex val error = uiState.error - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() val listState = rememberLazyListState() val scope = rememberCoroutineScope() @@ -465,4 +465,4 @@ fun SearchResultItem( } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/book/toc/TocScreen.kt b/app/src/main/java/io/legado/app/ui/book/toc/TocScreen.kt index 06144efd8..66e18f29f 100644 --- a/app/src/main/java/io/legado/app/ui/book/toc/TocScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/toc/TocScreen.kt @@ -67,7 +67,6 @@ import androidx.compose.material3.Tab import androidx.compose.material3.Text import androidx.compose.material3.ToggleFloatingActionButton import androidx.compose.material3.ToggleFloatingActionButtonDefaults.animateIcon -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.animateFloatingActionButton import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -100,6 +99,7 @@ import io.legado.app.ui.replace.ReplaceEditRoute import io.legado.app.ui.widget.CollapsibleHeader import io.legado.app.ui.widget.components.ActionItem import io.legado.app.ui.widget.components.EmptyMessageView +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.SelectionBottomBar import io.legado.app.ui.widget.components.bookmark.BookmarkEditSheet import io.legado.app.ui.widget.components.bookmark.BookmarkItem @@ -128,7 +128,7 @@ fun TocScreen( ) { val context = LocalContext.current - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() val book by viewModel.bookState.collectAsStateWithLifecycle() val state by viewModel.uiState.collectAsStateWithLifecycle() @@ -948,4 +948,4 @@ private fun StatusIcon( } } } -} +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/config/TestConfigActivity.kt b/app/src/main/java/io/legado/app/ui/config/TestConfigActivity.kt index a2f1c3811..5663e4d44 100644 --- a/app/src/main/java/io/legado/app/ui/config/TestConfigActivity.kt +++ b/app/src/main/java/io/legado/app/ui/config/TestConfigActivity.kt @@ -8,7 +8,6 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Scaffold import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll @@ -22,10 +21,13 @@ import io.legado.app.base.BaseComposeActivity import io.legado.app.ui.config.coverConfig.CoverConfigScreen import io.legado.app.ui.config.otherConfig.OtherConfigScreen import io.legado.app.ui.config.readConfig.ReadConfigScreen +import io.legado.app.ui.config.themeConfig.ThemeConfig import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.SplicedColumnGroup import io.legado.app.ui.widget.components.button.TopbarNavigationButton import io.legado.app.ui.widget.components.settingItem.ClickableSettingItem +import io.legado.app.ui.widget.components.settingItem.SwitchSettingItem import kotlinx.serialization.Serializable class TestConfigActivity : BaseComposeActivity() { @@ -81,7 +83,7 @@ class TestConfigActivity : BaseComposeActivity() { onNavigateToRead: () -> Unit, onNavigateToCover: () -> Unit ) { - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() Scaffold( modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), @@ -103,6 +105,11 @@ class TestConfigActivity : BaseComposeActivity() { .padding(16.dp) ) { SplicedColumnGroup { + SwitchSettingItem( + title = "使用折叠应用栏", + checked = ThemeConfig.useFlexibleTopAppBar, + onCheckedChange = { ThemeConfig.useFlexibleTopAppBar = it } + ) ClickableSettingItem( title = stringResource(R.string.other_setting), onClick = onNavigateToOther diff --git a/app/src/main/java/io/legado/app/ui/config/coverConfig/CoverConfigScreen.kt b/app/src/main/java/io/legado/app/ui/config/coverConfig/CoverConfigScreen.kt index 0ed3b5c7e..10b752b6e 100644 --- a/app/src/main/java/io/legado/app/ui/config/coverConfig/CoverConfigScreen.kt +++ b/app/src/main/java/io/legado/app/ui/config/coverConfig/CoverConfigScreen.kt @@ -14,7 +14,6 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -29,6 +28,7 @@ import androidx.compose.ui.unit.dp import io.legado.app.R import io.legado.app.constant.PreferKey import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.SplicedColumnGroup import io.legado.app.ui.widget.components.button.TopbarNavigationButton import io.legado.app.ui.widget.components.dialog.ColorPickerSheet @@ -43,7 +43,7 @@ fun CoverConfigScreen( onBackClick: () -> Unit, viewModel: CoverConfigViewModel = koinViewModel() ) { - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() var showCoverRuleSheet by remember { mutableStateOf(false) } var manageKey by remember { mutableStateOf(null) } var showColorPickerByField by remember { mutableStateOf(null) } @@ -282,4 +282,4 @@ fun CoverConfigScreen( } ) } -} +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/config/otherConfig/OtherConfigScreen.kt b/app/src/main/java/io/legado/app/ui/config/otherConfig/OtherConfigScreen.kt index 3da504735..f9761d678 100644 --- a/app/src/main/java/io/legado/app/ui/config/otherConfig/OtherConfigScreen.kt +++ b/app/src/main/java/io/legado/app/ui/config/otherConfig/OtherConfigScreen.kt @@ -17,7 +17,6 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TextField -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -32,6 +31,7 @@ import androidx.compose.ui.unit.dp import io.legado.app.R import io.legado.app.service.WebService import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.SplicedColumnGroup import io.legado.app.ui.widget.components.button.TopbarNavigationButton import io.legado.app.ui.widget.components.filePicker.FilePickerSheet @@ -58,7 +58,7 @@ fun OtherConfigScreen( } - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() var showClearCacheDialog by remember { mutableStateOf(false) } var showShrinkDbDialog by remember { mutableStateOf(false) } @@ -505,4 +505,4 @@ fun ConfirmDialog( } } ) -} +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfigScreen.kt b/app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfigScreen.kt index f4ff526f3..62fa60221 100644 --- a/app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfigScreen.kt +++ b/app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfigScreen.kt @@ -8,7 +8,6 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Scaffold import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -22,6 +21,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import io.legado.app.R import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.SplicedColumnGroup import io.legado.app.ui.widget.components.button.TopbarNavigationButton import io.legado.app.ui.widget.components.settingItem.ClickableSettingItem @@ -38,7 +38,7 @@ fun ReadConfigScreen( viewModel: ReadConfigViewModel = koinViewModel() ) { val context = LocalContext.current - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() var showPageKeySheet by remember { mutableStateOf(false) } Scaffold( @@ -326,4 +326,4 @@ fun ReadConfigScreen( if (showPageKeySheet) { PageKeySheet(onDismissRequest = { showPageKeySheet = false }) } -} +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfig.kt b/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfig.kt index b1672b7c3..6fbb15223 100644 --- a/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfig.kt +++ b/app/src/main/java/io/legado/app/ui/config/themeConfig/ThemeConfig.kt @@ -11,6 +11,8 @@ object ThemeConfig { var enableProgressiveBlur by prefDelegate(PreferKey.enableProgressiveBlur, true) + var useFlexibleTopAppBar by prefDelegate(PreferKey.useFlexibleTopAppBar, true) + var paletteStyle by prefDelegate(PreferKey.paletteStyle, "tonalSpot") var appTheme by prefDelegate(PreferKey.appTheme, "0") diff --git a/app/src/main/java/io/legado/app/ui/main/my/MyScreen.kt b/app/src/main/java/io/legado/app/ui/main/my/MyScreen.kt index 009f7d8de..5ab7da7ef 100644 --- a/app/src/main/java/io/legado/app/ui/main/my/MyScreen.kt +++ b/app/src/main/java/io/legado/app/ui/main/my/MyScreen.kt @@ -34,7 +34,6 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Switch import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue @@ -54,6 +53,7 @@ import io.legado.app.ui.dict.rule.DictRuleActivity import io.legado.app.ui.file.FileManageActivity import io.legado.app.ui.replace.ReplaceRuleActivity import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.SplicedColumnGroup import io.legado.app.ui.widget.components.settingItem.SettingItem @@ -66,7 +66,7 @@ fun MyScreen( ) { val uiState by viewModel.uiState.collectAsState() - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() Scaffold( modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), @@ -281,4 +281,4 @@ fun MyScreen( Spacer(Modifier.height(120.dp)) } } -} +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditScreen.kt b/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditScreen.kt index e39a7f26e..f558c4702 100644 --- a/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditScreen.kt +++ b/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditScreen.kt @@ -58,7 +58,6 @@ import androidx.compose.material3.TextButton import androidx.compose.material3.TooltipAnchorPosition import androidx.compose.material3.TooltipBox import androidx.compose.material3.TooltipDefaults -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.animateFloatingActionButton import androidx.compose.material3.rememberTooltipState import androidx.compose.runtime.Composable @@ -80,6 +79,7 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import io.legado.app.ui.widget.components.GlassMediumFlexibleTopAppBar +import io.legado.app.ui.widget.components.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.button.AlertButton import io.legado.app.ui.widget.components.button.TopbarNavigationButton import org.koin.androidx.compose.koinViewModel @@ -103,7 +103,7 @@ fun ReplaceEditScreen( val sharedKey = remember(state.id) { if (state.id > 0) "rule_${state.id}" else "fab_add" } - val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + val scrollBehavior = GlassTopAppBarDefaults.defaultScrollBehavior() var showMenu by remember { mutableStateOf(false) } val isKeyboardVisible by keyboardAsState() diff --git a/app/src/main/java/io/legado/app/ui/widget/components/GlassMediumFlexibleTopAppBar.kt b/app/src/main/java/io/legado/app/ui/widget/components/GlassMediumFlexibleTopAppBar.kt index ad6f567ff..729a184da 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/GlassMediumFlexibleTopAppBar.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/GlassMediumFlexibleTopAppBar.kt @@ -5,6 +5,7 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MediumFlexibleTopAppBar +import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarColors import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarScrollBehavior @@ -24,19 +25,40 @@ fun GlassMediumFlexibleTopAppBar( actions: @Composable RowScope.() -> Unit = {}, colors: TopAppBarColors = GlassTopAppBarDefaults.glassColors() ) { - MediumFlexibleTopAppBar( - modifier = modifier, - title = title, - subtitle = subtitle, - navigationIcon = navigationIcon, - actions = actions, - scrollBehavior = scrollBehavior, - colors = colors - ) + if (ThemeConfig.useFlexibleTopAppBar) { + MediumFlexibleTopAppBar( + modifier = modifier, + title = title, + subtitle = subtitle, + navigationIcon = navigationIcon, + actions = actions, + scrollBehavior = scrollBehavior, + colors = colors + ) + } else { + TopAppBar( + modifier = modifier, + title = title, + navigationIcon = navigationIcon, + actions = actions, + scrollBehavior = scrollBehavior, + colors = colors + ) + } } object GlassTopAppBarDefaults { + @OptIn(ExperimentalMaterial3Api::class) + @Composable + fun defaultScrollBehavior(): TopAppBarScrollBehavior { + return if (ThemeConfig.useFlexibleTopAppBar) { + TopAppBarDefaults.exitUntilCollapsedScrollBehavior() + } else { + TopAppBarDefaults.pinnedScrollBehavior() + } + } + @Composable fun glassColors(): TopAppBarColors { val opacity = ThemeConfig.containerOpacity / 100f