@@ -23,6 +23,7 @@ import androidx.compose.animation.core.Spring
2323import androidx.compose.animation.core.spring
2424import androidx.compose.animation.core.tween
2525import androidx.compose.foundation.ExperimentalFoundationApi
26+ import androidx.compose.foundation.border
2627import androidx.compose.foundation.horizontalScroll
2728import androidx.compose.foundation.layout.Arrangement
2829import androidx.compose.foundation.layout.Box
@@ -33,11 +34,14 @@ import androidx.compose.foundation.layout.fillMaxSize
3334import androidx.compose.foundation.layout.fillMaxWidth
3435import androidx.compose.foundation.layout.height
3536import androidx.compose.foundation.layout.size
37+ import androidx.compose.foundation.layout.width
3638import androidx.compose.foundation.layout.wrapContentHeight
39+ import androidx.compose.foundation.layout.wrapContentSize
3740import androidx.compose.foundation.lazy.LazyColumn
3841import androidx.compose.foundation.lazy.LazyRow
3942import androidx.compose.foundation.lazy.grid.GridCells
4043import androidx.compose.foundation.lazy.grid.GridItemSpan
44+ import androidx.compose.foundation.lazy.grid.LazyHorizontalGrid
4145import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
4246import androidx.compose.foundation.lazy.grid.items
4347import androidx.compose.foundation.lazy.items
@@ -58,6 +62,7 @@ import androidx.compose.runtime.rememberCoroutineScope
5862import androidx.compose.runtime.saveable.rememberSaveable
5963import androidx.compose.runtime.snapshotFlow
6064import androidx.compose.ui.Modifier
65+ import androidx.compose.ui.graphics.Color
6166import androidx.compose.ui.layout.ContentScale
6267import androidx.compose.ui.tooling.preview.Preview
6368import androidx.compose.ui.unit.Density
@@ -68,11 +73,11 @@ import androidx.paging.compose.itemKey
6873import coil.compose.AsyncImage
6974import coil.compose.rememberAsyncImagePainter
7075import com.example.compose.snippets.util.randomSampleImageUrl
71- import kotlin.random.Random
7276import kotlinx.coroutines.flow.distinctUntilChanged
7377import kotlinx.coroutines.flow.filter
7478import kotlinx.coroutines.flow.map
7579import kotlinx.coroutines.launch
80+ import kotlin.random.Random
7681
7782private object ListsSnippetsColumn {
7883 // [START android_compose_layouts_list_column]
@@ -772,3 +777,29 @@ fun MessageList(modifier: Modifier = Modifier) {
772777 }
773778}
774779// [END android_compose_lists_snap_scroll_button]
780+
781+ // [START android_compose_layout_scrollable_grid]
782+ @Composable
783+ fun ScrollingGrid () {
784+ val itemsList = (0 .. 15 ).toList()
785+
786+ val itemModifier = Modifier
787+ .border(1 .dp, Color .Blue )
788+ .width(80 .dp)
789+ .wrapContentSize()
790+
791+ LazyHorizontalGrid (
792+ rows = GridCells .Fixed (3 ),
793+ horizontalArrangement = Arrangement .spacedBy(16 .dp),
794+ verticalArrangement = Arrangement .spacedBy(16 .dp)
795+ ) {
796+ items(itemsList) {
797+ Text (" Item is $it " , itemModifier)
798+ }
799+
800+ item {
801+ Text (" Single item" , itemModifier)
802+ }
803+ }
804+ }
805+ // [END android_compose_layout_scrollable_grid]
0 commit comments