Skip to content

Commit 7a00b4f

Browse files
committed
feat: adds close button to list-and-detail pane sample.
1 parent 2489cb2 commit 7a00b4f

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@ import androidx.compose.foundation.layout.fillMaxSize
2525
import androidx.compose.foundation.layout.padding
2626
import androidx.compose.foundation.layout.size
2727
import androidx.compose.foundation.lazy.LazyColumn
28+
import androidx.compose.material.icons.Icons
29+
import androidx.compose.material.icons.filled.Close
2830
import androidx.compose.material3.Card
31+
import androidx.compose.material3.Icon
32+
import androidx.compose.material3.IconButton
2933
import androidx.compose.material3.ListItem
3034
import androidx.compose.material3.Text
3135
import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
@@ -34,13 +38,15 @@ import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
3438
import androidx.compose.material3.adaptive.layout.AnimatedPane
3539
import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffold
3640
import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole
41+
import androidx.compose.material3.adaptive.layout.PaneAdaptedValue
3742
import androidx.compose.material3.adaptive.layout.PaneScaffoldDirective
3843
import androidx.compose.material3.adaptive.navigation.BackNavigationBehavior
3944
import androidx.compose.material3.adaptive.navigation.NavigableListDetailPaneScaffold
4045
import androidx.compose.material3.adaptive.navigation.ThreePaneScaffoldPredictiveBackHandler
4146
import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator
4247
import androidx.compose.runtime.Composable
4348
import androidx.compose.runtime.rememberCoroutineScope
49+
import androidx.compose.ui.Alignment
4450
import androidx.compose.ui.Modifier
4551
import androidx.compose.ui.graphics.Color
4652
import androidx.compose.ui.tooling.preview.Preview
@@ -118,6 +124,7 @@ fun SampleNavigableListDetailPaneScaffoldFull() {
118124
// [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_full]
119125
val scaffoldNavigator = rememberListDetailPaneScaffoldNavigator<MyItem>()
120126
val scope = rememberCoroutineScope()
127+
val backNavigationBehavior = BackNavigationBehavior.PopUntilScaffoldValueChange
121128

122129
NavigableListDetailPaneScaffold(
123130
navigator = scaffoldNavigator,
@@ -137,10 +144,28 @@ fun SampleNavigableListDetailPaneScaffoldFull() {
137144
}
138145
},
139146
detailPane = {
140-
AnimatedPane {
141-
// Show the detail pane content if selected item is available
142-
scaffoldNavigator.currentDestination?.contentKey?.let {
143-
MyDetails(it)
147+
Column {
148+
// Allow users to dismiss the detail pane. Use back navigation to
149+
// hide an expanded detail pane.
150+
if (scaffoldNavigator.scaffoldValue[ListDetailPaneScaffoldRole.Detail] == PaneAdaptedValue.Expanded) {
151+
// Material design principles promote the usage of a right-aligned
152+
// close (X) button.
153+
IconButton(
154+
modifier = Modifier.align(Alignment.End).padding(16.dp),
155+
onClick = {
156+
scope.launch {
157+
scaffoldNavigator.navigateBack(backNavigationBehavior)
158+
}
159+
}
160+
) {
161+
Icon(Icons.Default.Close, contentDescription = "Close")
162+
}
163+
}
164+
AnimatedPane {
165+
// Show the detail pane content if selected item is available
166+
scaffoldNavigator.currentDestination?.contentKey?.let {
167+
MyDetails(it)
168+
}
144169
}
145170
}
146171
},

0 commit comments

Comments
 (0)