Add: Scrolling TopBar

This commit is contained in:
machiav3lli 2022-10-08 02:48:57 +02:00
parent a7e5772310
commit 376db653ee
2 changed files with 11 additions and 1 deletions

View File

@ -12,11 +12,13 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.SideEffect import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.google.accompanist.navigation.animation.rememberAnimatedNavController import com.google.accompanist.navigation.animation.rememberAnimatedNavController
@ -100,18 +102,21 @@ class MainActivityX : AppCompatActivity() {
) { ) {
val query by searchQuery.collectAsState(initial = "") val query by searchQuery.collectAsState(initial = "")
val navController = rememberAnimatedNavController() val navController = rememberAnimatedNavController()
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()
SideEffect { SideEffect {
cScope.launch { _searchQuery.emit("") } cScope.launch { _searchQuery.emit("") }
} }
Scaffold( Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
containerColor = Color.Transparent, containerColor = Color.Transparent,
contentColor = MaterialTheme.colorScheme.onBackground, contentColor = MaterialTheme.colorScheme.onBackground,
bottomBar = { BottomNavBar(page = NAV_MAIN, navController = navController) }, bottomBar = { BottomNavBar(page = NAV_MAIN, navController = navController) },
topBar = { topBar = {
TopBar( TopBar(
title = stringResource(id = R.string.application_name), title = stringResource(id = R.string.application_name),
scrollBehavior = scrollBehavior,
) { ) {
ExpandableSearchAction( ExpandableSearchAction(
query = query, query = query,

View File

@ -11,12 +11,14 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController import androidx.navigation.NavController
@ -77,6 +79,7 @@ class PrefsActivityX : AppCompatActivity() {
} }
) { ) {
val navController = rememberAnimatedNavController() val navController = rememberAnimatedNavController()
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()
var pageTitle: Int? by remember { var pageTitle: Int? by remember {
mutableStateOf(NavItem.Prefs.title) mutableStateOf(NavItem.Prefs.title)
} }
@ -86,6 +89,7 @@ class PrefsActivityX : AppCompatActivity() {
} }
Scaffold( Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
containerColor = Color.Transparent, containerColor = Color.Transparent,
contentColor = MaterialTheme.colorScheme.onBackground, contentColor = MaterialTheme.colorScheme.onBackground,
bottomBar = { BottomNavBar(page = NAV_PREFS, navController = navController) }, bottomBar = { BottomNavBar(page = NAV_PREFS, navController = navController) },
@ -93,7 +97,8 @@ class PrefsActivityX : AppCompatActivity() {
TopBar( TopBar(
title = stringResource( title = stringResource(
id = pageTitle ?: NavItem.Prefs.title id = pageTitle ?: NavItem.Prefs.title
) ),
scrollBehavior = scrollBehavior
) )
} }
) { paddingValues -> ) { paddingValues ->