feat(android): use enter always scroll behavior for TopAppBar

This commit is contained in:
Harsh Shandilya 2022-12-13 17:03:04 +00:00
parent b7229c6d15
commit eeef2c347d
3 changed files with 14 additions and 3 deletions

View file

@ -14,6 +14,7 @@ import androidx.compose.material3.IconButton
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.LaunchedEffect
import androidx.compose.runtime.SideEffect
@ -22,6 +23,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler
@ -69,6 +71,7 @@ fun LobstersApp(
modifier: Modifier = Modifier,
viewModel: ClawViewModel = injectedViewModel(),
) {
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()
val systemUiController = rememberSystemUiController()
val hottestListState = rememberLazyListState()
val newestListState = rememberLazyListState()
@ -153,6 +156,7 @@ fun LobstersApp(
Text(text = stringResource(R.string.app_name), fontWeight = FontWeight.Bold)
}
},
scrollBehavior = scrollBehavior,
)
},
bottomBar = {
@ -162,7 +166,10 @@ fun LobstersApp(
isVisible = navItems.any { it.route == currentDestination },
)
},
modifier = modifier.semantics { testTagsAsResourceId = true },
modifier =
modifier
.semantics { testTagsAsResourceId = true }
.nestedScroll(scrollBehavior.nestedScrollConnection),
) { paddingValues ->
NavHost(
navController = navController,

View file

@ -4,6 +4,8 @@
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT.
*/
@file:OptIn(ExperimentalMaterial3Api::class)
package dev.msfjarvis.claw.common.ui.decorations
import androidx.compose.foundation.layout.RowScope
@ -12,6 +14,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.shadow
@ -24,13 +27,13 @@ import dev.msfjarvis.claw.common.ui.preview.ThemePreviews
import dev.msfjarvis.claw.common.ui.surfaceColorAtNavigationBarElevation
@Composable
@OptIn(ExperimentalMaterial3Api::class)
fun ClawAppBar(
backgroundColor: Color,
modifier: Modifier = Modifier,
navigationIcon: @Composable () -> Unit = {},
title: @Composable () -> Unit = {},
actions: @Composable RowScope.() -> Unit = {},
scrollBehavior: TopAppBarScrollBehavior? = null,
) {
TopAppBar(
title = title,
@ -38,6 +41,7 @@ fun ClawAppBar(
colors = TopAppBarDefaults.smallTopAppBarColors(containerColor = backgroundColor),
navigationIcon = navigationIcon,
actions = actions,
scrollBehavior = scrollBehavior,
)
}

View file

@ -125,7 +125,7 @@ complexity:
threshold: 60
LongParameterList:
active: true
functionThreshold: 6
functionThreshold: 7
constructorThreshold: 7
ignoreDefaultParameters: false
ignoreDataClasses: true