Status Update
Comments
co...@google.com <co...@google.com> #2
Let's talk to the designer and product and think about how this can be supported...
be...@gmail.com <be...@gmail.com> #3
I am looking for the same functionality, too. The FAB on big screens should be placed in the top left cordner according to the
be...@gmail.com <be...@gmail.com> #4
For now, we can use the following implementation:
@Composable
fun NavigationSuiteScaffoldFab(
navigationSuiteItems: NavigationSuiteScope.() -> Unit,
modifier: Modifier = Modifier,
layoutType: NavigationSuiteType =
NavigationSuiteScaffoldDefaults.calculateFromAdaptiveInfo(currentWindowAdaptiveInfo()),
navigationSuiteColors: NavigationSuiteColors = NavigationSuiteDefaults.colors(),
containerColor: Color = NavigationSuiteScaffoldDefaults.containerColor,
contentColor: Color = NavigationSuiteScaffoldDefaults.contentColor,
floatingActionButton: @Composable () -> Unit = {},
content: @Composable () -> Unit = {},
) {
Surface(modifier = modifier, color = containerColor, contentColor = contentColor) {
NavigationSuiteScaffoldLayout(
navigationSuite = {
Column(
horizontalAlignment = Alignment.CenterHorizontally
) {
if (layoutType == NavigationSuiteType.NavigationRail
|| layoutType == NavigationSuiteType.NavigationDrawer) {
Box(
modifier = Modifier.padding(16.dp)
) {
floatingActionButton()
}
}
NavigationSuite(
layoutType = layoutType,
colors = navigationSuiteColors,
content = navigationSuiteItems
)
}
},
layoutType = layoutType,
content = {
Scaffold(
modifier = Modifier.consumeWindowInsets(
when (layoutType) {
NavigationSuiteType.NavigationBar ->
NavigationBarDefaults.windowInsets.only(WindowInsetsSides.Bottom)
NavigationSuiteType.NavigationRail ->
NavigationRailDefaults.windowInsets.only(WindowInsetsSides.Start)
NavigationSuiteType.NavigationDrawer ->
DrawerDefaults.windowInsets.only(WindowInsetsSides.Start)
else -> WindowInsets(0, 0, 0, 0)
}
),
floatingActionButton = {
if (layoutType == NavigationSuiteType.NavigationBar) {
floatingActionButton()
}
}
) {
Box(modifier = Modifier.padding(it)) {
content()
}
}
}
)
}
}
Then, simply pass your FloatingActionButton
Composable into the provided parameter.
to...@gmail.com <to...@gmail.com> #5
There should be also support for a header in the navigation rail.
Best would be something like this
NavigationSuiteScaffold(
navigationSuiteItems = {
header()
fab()
item()
item()
},
)
ap...@google.com <ap...@google.com> #6
Android API Change
This bug was referenced by a recent CL that changed the Android API surface area.
The
We'll wait until you mark this bug as 'Fixed' before starting our review, but please reach out if you'd like us to review it sooner.
Changes to compose/material3/material3-adaptive-navigation-suite/api/current.txt
- androidx.compose.material3.adaptive.navigationsuite
- androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffoldDefaults
- androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffoldKt
[Gerrit:https://android-review.googlesource.com/3530974]
[API-Approvers:
[Branch:androidx-main]
[LIBRARY_API_REVIEW_TAG:compose/material3/material3-adaptive-navigation-suite/api/current.txt]
le...@google.com <le...@google.com> #7
The new NavigationSuiteScaffold APIs added in aosp/3530974 introduce the support for an optional primaryActionButton, which can be a FAB, so will be closing this FR!
Description