Skip to content

Commit 7457502

Browse files
authored
Merge pull request #457 from android/jdk/adaptive-codelab/permanent-nav-drawer
[AdaptiveUiCodelab] show nav drawer at 1200dp
2 parents f3a361f + e15ba62 commit 7457502

File tree

1 file changed

+23
-1
lines changed
  • AdaptiveUiCodelab/app/src/main/java/com/example/reply/ui

1 file changed

+23
-1
lines changed

AdaptiveUiCodelab/app/src/main/java/com/example/reply/ui/ReplyApp.kt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,30 @@ import androidx.activity.compose.BackHandler
2020
import androidx.compose.material3.Icon
2121
import androidx.compose.material3.Text
2222
import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
23+
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
24+
import androidx.compose.material3.adaptive.currentWindowSize
2325
import androidx.compose.material3.adaptive.layout.AnimatedPane
2426
import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffold
2527
import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole
2628
import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator
2729
import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffold
30+
import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffoldDefaults
31+
import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteType
2832
import androidx.compose.runtime.Composable
2933
import androidx.compose.runtime.getValue
3034
import androidx.compose.runtime.mutableStateOf
3135
import androidx.compose.runtime.remember
3236
import androidx.compose.runtime.setValue
37+
import androidx.compose.ui.platform.LocalDensity
3338
import androidx.compose.ui.res.stringResource
39+
import androidx.compose.ui.unit.dp
40+
import androidx.compose.ui.unit.toSize
3441
import androidx.window.core.layout.WindowWidthSizeClass
3542
import com.example.reply.data.Email
3643
import com.example.reply.ui.utils.DevicePosture
3744

45+
private val WINDOW_WIDTH_LARGE = 1200.dp
46+
3847
@Composable
3948
fun ReplyApp(
4049
windowSize: WindowWidthSizeClass,
@@ -57,6 +66,18 @@ private fun ReplyNavigationWrapperUI(
5766
var selectedDestination: ReplyDestination by remember {
5867
mutableStateOf(ReplyDestination.Inbox)
5968
}
69+
70+
val windowSize = with(LocalDensity.current) {
71+
currentWindowSize().toSize().toDpSize()
72+
}
73+
val navLayoutType = if (windowSize.width >= WINDOW_WIDTH_LARGE) {
74+
// Show a permanent drawer when window width is large.
75+
NavigationSuiteType.NavigationDrawer
76+
} else {
77+
// Otherwise use the default from NavigationSuiteScaffold.
78+
NavigationSuiteScaffoldDefaults.calculateFromAdaptiveInfo(currentWindowAdaptiveInfo())
79+
}
80+
6081
NavigationSuiteScaffold(
6182
navigationSuiteItems = {
6283
ReplyDestination.entries.forEach {
@@ -67,7 +88,8 @@ private fun ReplyNavigationWrapperUI(
6788
onClick = { /*TODO update selection*/ },
6889
)
6990
}
70-
}
91+
},
92+
layoutType = navLayoutType
7193
) {
7294
content()
7395
}

0 commit comments

Comments
 (0)