androidx.compose.material.navigation
Classes
BottomSheetNavigator |
Navigator that drives a |
BottomSheetNavigator.Destination |
|
BottomSheetNavigatorDestinationBuilder |
DSL for constructing a new |
BottomSheetNavigatorSheetState |
The state of a |
Top-level functions summary
Unit |
@ComposableCreate a |
BottomSheetNavigator |
@ComposableCreate and remember a |
Extension functions summary
Unit |
NavGraphBuilder.bottomSheet(Add the |
inline Unit |
<T : Any> NavGraphBuilder.bottomSheet(Add the |
Top-level functions
ModalBottomSheetLayout
@Composable
fun ModalBottomSheetLayout(
bottomSheetNavigator: BottomSheetNavigator,
modifier: Modifier = Modifier,
sheetGesturesEnabled: Boolean = true,
sheetShape: Shape = MaterialTheme.shapes.large,
sheetElevation: Dp = ModalBottomSheetDefaults.Elevation,
sheetBackgroundColor: Color = MaterialTheme.colors.surface,
sheetContentColor: Color = contentColorFor(sheetBackgroundColor),
scrimColor: Color = ModalBottomSheetDefaults.scrimColor,
content: @Composable () -> Unit
): Unit
Create a ModalBottomSheetLayout displaying content from a BottomSheetNavigator.
import androidx.compose.material.Text import androidx.compose.material.navigation.ModalBottomSheetLayout import androidx.compose.material.navigation.bottomSheet import androidx.compose.material.navigation.rememberBottomSheetNavigator import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController val bottomSheetNavigator = rememberBottomSheetNavigator() val navController = rememberNavController(bottomSheetNavigator) ModalBottomSheetLayout(bottomSheetNavigator) { NavHost(navController, Destinations.Home) { composable(Destinations.Home) { HomeScreen( showSheet = { navController.navigate(Destinations.Sheet + "?arg=From Home Screen") }, showFeed = { navController.navigate(Destinations.Feed) }, ) } composable(Destinations.Feed) { Text("Feed!") } bottomSheet(Destinations.Sheet + "?arg={arg}") { backstackEntry -> val arg = backstackEntry.arguments?.getString("arg") ?: "Missing argument :(" BottomSheet( showFeed = { navController.navigate(Destinations.Feed) }, showAnotherSheet = { navController.navigate(Destinations.Sheet + "?arg=${UUID.randomUUID()}") }, arg = arg, ) } } }
| Parameters | |
|---|---|
bottomSheetNavigator: BottomSheetNavigator |
The navigator that manages the bottom sheet content. |
modifier: Modifier = Modifier |
Optional |
sheetGesturesEnabled: Boolean = true |
Whether the bottom sheet can be interacted with by gestures. |
sheetShape: Shape = MaterialTheme.shapes.large |
The shape of the bottom sheet. |
sheetElevation: Dp = ModalBottomSheetDefaults.Elevation |
The elevation of the bottom sheet. |
sheetBackgroundColor: Color = MaterialTheme.colors.surface |
The background color of the bottom sheet. |
sheetContentColor: Color = contentColorFor(sheetBackgroundColor) |
The preferred content color provided by the bottom sheet to its children. Defaults to the matching content color for |
scrimColor: Color = ModalBottomSheetDefaults.scrimColor |
The color of the scrim that is applied to the rest of the screen when the bottom sheet is visible. If the color passed is |
content: @Composable () -> Unit |
The content of rest of the screen. |
| See also | |
|---|---|
ModalBottomSheetLayout |
rememberBottomSheetNavigator
@Composable
fun rememberBottomSheetNavigator(
animationSpec: AnimationSpec<Float> = SpringSpec()
): BottomSheetNavigator
Create and remember a BottomSheetNavigator.
| Parameters | |
|---|---|
animationSpec: AnimationSpec<Float> = SpringSpec() |
The default animation that will be used to animate to a new state. |
Extension functions
bottomSheet
fun NavGraphBuilder.bottomSheet(
route: String,
arguments: List<NamedNavArgument> = emptyList(),
deepLinks: List<NavDeepLink> = emptyList(),
content: @Composable ColumnScope.(backstackEntry: NavBackStackEntry) -> Unit
): Unit
Add the content as bottom sheet content to the NavGraphBuilder
import androidx.compose.material.Text import androidx.compose.material.navigation.ModalBottomSheetLayout import androidx.compose.material.navigation.bottomSheet import androidx.compose.material.navigation.rememberBottomSheetNavigator import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController val bottomSheetNavigator = rememberBottomSheetNavigator() val navController = rememberNavController(bottomSheetNavigator) ModalBottomSheetLayout(bottomSheetNavigator) { NavHost(navController, Destinations.Home) { composable(Destinations.Home) { HomeScreen( showSheet = { navController.navigate(Destinations.Sheet + "?arg=From Home Screen") }, showFeed = { navController.navigate(Destinations.Feed) }, ) } composable(Destinations.Feed) { Text("Feed!") } bottomSheet(Destinations.Sheet + "?arg={arg}") { backstackEntry -> val arg = backstackEntry.arguments?.getString("arg") ?: "Missing argument :(" BottomSheet( showFeed = { navController.navigate(Destinations.Feed) }, showAnotherSheet = { navController.navigate(Destinations.Sheet + "?arg=${UUID.randomUUID()}") }, arg = arg, ) } } }
| Parameters | |
|---|---|
route: String |
route for the destination |
arguments: List<NamedNavArgument> = emptyList() |
list of arguments to associate with destination |
deepLinks: List<NavDeepLink> = emptyList() |
list of deep links to associate with the destinations |
content: @Composable ColumnScope.(backstackEntry: NavBackStackEntry) -> Unit |
the sheet content at the given destination |
bottomSheet
inline fun <T : Any> NavGraphBuilder.bottomSheet(
typeMap: Map<KType, NavType<*>> = emptyMap(),
arguments: List<NamedNavArgument> = emptyList(),
deepLinks: List<NavDeepLink> = emptyList(),
noinline content: @Composable ColumnScope.(backstackEntry: NavBackStackEntry) -> Unit
): Unit
Add the content as bottom sheet content to the NavGraphBuilder
import androidx.compose.material.Text import androidx.compose.material.navigation.ModalBottomSheetLayout import androidx.compose.material.navigation.bottomSheet import androidx.compose.material.navigation.rememberBottomSheetNavigator import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController val bottomSheetNavigator = rememberBottomSheetNavigator() val navController = rememberNavController(bottomSheetNavigator) ModalBottomSheetLayout(bottomSheetNavigator) { NavHost(navController, Destinations.Home) { composable(Destinations.Home) { HomeScreen( showSheet = { navController.navigate(Destinations.Sheet + "?arg=From Home Screen") }, showFeed = { navController.navigate(Destinations.Feed) }, ) } composable(Destinations.Feed) { Text("Feed!") } bottomSheet(Destinations.Sheet + "?arg={arg}") { backstackEntry -> val arg = backstackEntry.arguments?.getString("arg") ?: "Missing argument :(" BottomSheet( showFeed = { navController.navigate(Destinations.Feed) }, showAnotherSheet = { navController.navigate(Destinations.Sheet + "?arg=${UUID.randomUUID()}") }, arg = arg, ) } } }
| Parameters | |
|---|---|
<T : Any> |
route from a |
typeMap: Map<KType, NavType<*>> = emptyMap() |
map of destination arguments' kotlin type |
arguments: List<NamedNavArgument> = emptyList() |
list of arguments to associate with destination |
deepLinks: List<NavDeepLink> = emptyList() |
list of deep links to associate with the destinations |
noinline content: @Composable ColumnScope.(backstackEntry: NavBackStackEntry) -> Unit |
the sheet content at the given destination |