Android JetPack Compose - modyfikacja siatki

Android JetPack Compose - modyfikacja siatki
misio_
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 61
0

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).

Kopiuj
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

KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Miasto Spotkań
  • Postów: 34
0

Od tego jest biblioteka paging w androidzie. Jeżeli problem dalej aktualny to daj znać.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.