Dzień dobry.
Chcę wychwycić kiedy pozycja selektora elementu siatki dojdzie do ostatniego itemu, a następnie chcę dodać do siatki nowe elementy (określone przeze mnie, gotowe do dodania).
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxHeight()
) {
TvLazyVerticalGrid(
columns = TvGridCells.Fixed(4),
contentPadding = PaddingValues(
bottom = JetStreamBottomListPadding,
),
state = gridState,
modifier = modifier
) {
item (span = {TvGridItemSpan(maxLineSpan)}) {
FeaturedMoviesCarousel(
movies = featuredMovies,
padding = childPadding,
goToVideoPlayer = goToVideoPlayer,
modifier = Modifier
.fillMaxWidth()
.height(324.dp)
.padding(bottom = 38.dp)
/*
Setting height for the FeaturedMovieCarousel to keep it rendered with same height,
regardless of the top bar's visibility
*/
)
}
movieList.forEachIndexed { index, movie ->
item {
key(movie.id) {
Box(contentAlignment = Alignment.CenterStart) {
StandardCardLayout(
modifier = Modifier
.aspectRatio(1.77f / 1)
.padding(8.dp)
.then(
if (index == 0)
Modifier.focusOnInitialVisibility(isFirstItemVisible)
else Modifier
),
imageCard = {
CardLayoutDefaults.ImageCard(
shape = CardDefaults.shape(shape = JetStreamCardShape),
border = CardDefaults.border(
focusedBorder = Border(
border = BorderStroke(
width = JetStreamBorderWidth,
color = MaterialTheme.colorScheme.onSurface
),
shape = JetStreamCardShape
),
pressedBorder = Border(
border = BorderStroke(
width = JetStreamBorderWidth,
color = MaterialTheme.colorScheme.border
),
shape = JetStreamCardShape
),
),
scale = CardDefaults.scale(focusedScale = 1f),
onClick = { onMovieSelected(movie) },
interactionSource = it
) {
AsyncImage(
model = ImageRequest.Builder(LocalContext.current)
.data(movie.posterUri)
.crossfade(true)
.build(),
contentDescription = StringConstants
.Composable
.ContentDescription
.moviePoster(movie.name),
contentScale = ContentScale.Crop,
modifier = Modifier.fillMaxSize()
)
}
},
title = {},
)
Text(
text = movie.name + "\n(${movie.stars}) " + movie.releaseDate,
style = MaterialTheme.typography.bodyMedium.copy(
fontWeight = FontWeight.SemiBold
),
textAlign = TextAlign.Center,
modifier = modifier
.alpha(0.5f)
.padding(top = 26.dp)
.background(color = Color.Black)
.align(Alignment.BottomCenter)
,
maxLines = 2,
overflow = TextOverflow.Ellipsis,
color = Color.White,
)
}
}
}
}
}
}
Gdzie i jak mogę sprawdzić, na jakim elemencie kursor się zatrzymał, oraz, jak mogę zmodyfikować zawartość komponentu TvLazyVerticalGrid
?
Pzdr