Смещение изображения в автослайдере Android TV (Jetpack Compose) ⇐ Android
-
Гость
Смещение изображения в автослайдере Android TV (Jetpack Compose)
Первое изображение слайдера работает нормально, но со второго кажется, что изображения не центрированы, а второе как будто вытесняет первое, третье вытесняет первое и второе и так далее.
Другая проблема заключается в том, что когда ползунок подходит к концу, вместо того, чтобы вернуться к первому изображению, он переходит к третьему.
Вот мой код для изображения и автослайдера:
@Composable забавное слайдеризображение( @DrawableRes возможность рисования: Int, Текст @StringRes: Int, модификатор: Модификатор = Модификатор ) { Столбец( HorizontalAlignment = Alignment.CenterHorizontally, вертикальноеРасположение = Расположение.Центр, модификатор = modifier.fillMaxWidth().fillMaxHeight() ) { Текст( текст = stringResource(текст), модификатор = Modifier.paddingFromBaseline(верх = 24.dp, низ = 8.dp), стиль = MaterialTheme.typography.bodyMedium ) Изображение( художник = PainterResource (рисуемый), ContentDescription = ноль, contentScale = ContentScale.FillBounds, модификатор = Модификатор //.размер(250.dp) ) } } @OptIn(ExperimentalFoundationApi::class) @Композитный весело AutoSlidingCarousel( модификатор: Модификатор = Модификатор, выравнивание: Выравнивание = Выравнивание.Центр, autoSlideDuration: Long = AUTO_SLIDE_DURATION, itemsCount: Int, pagerState: PagerState = помните { PagerState() }, itemContent: @Composable (индекс: Int) -> Единица измерения ) { LaunchedEffect(pagerState.currentPage) { задержка (autoSlideDuration) pagerState.animateScrollToPage((pagerState.currentPage+1) % itemsCount) } Коробка ( модификатор = modifier.fillMaxWidth(), contentAlignment = выравнивание ) { HorizontalPager(pageCount = itemsCount, состояние = pagerState) {страница -> itemContent(страница) } Поверхность( модификатор = Модификатор .padding(низ = 8.dp) .align(Выравнивание.BottomCenter), форма = Форма Круга, цвет = Color.Black.copy(альфа = 0,5f) ) { DotsIndicator( модификатор = Modifier.padding(горизонтальный = 8.dp, вертикальный = 6.dp), всегоDots = itemsCount, selectedIndex = pagerState.targetPage, selectedSize = 8.dp, unselectedSize = 6.dp ) } } } Я пробовал центрировать изображение в нескольких местах, но ни одно из них не помогло.
Первое изображение слайдера работает нормально, но со второго кажется, что изображения не центрированы, а второе как будто вытесняет первое, третье вытесняет первое и второе и так далее.
Другая проблема заключается в том, что когда ползунок подходит к концу, вместо того, чтобы вернуться к первому изображению, он переходит к третьему.
Вот мой код для изображения и автослайдера:
@Composable забавное слайдеризображение( @DrawableRes возможность рисования: Int, Текст @StringRes: Int, модификатор: Модификатор = Модификатор ) { Столбец( HorizontalAlignment = Alignment.CenterHorizontally, вертикальноеРасположение = Расположение.Центр, модификатор = modifier.fillMaxWidth().fillMaxHeight() ) { Текст( текст = stringResource(текст), модификатор = Modifier.paddingFromBaseline(верх = 24.dp, низ = 8.dp), стиль = MaterialTheme.typography.bodyMedium ) Изображение( художник = PainterResource (рисуемый), ContentDescription = ноль, contentScale = ContentScale.FillBounds, модификатор = Модификатор //.размер(250.dp) ) } } @OptIn(ExperimentalFoundationApi::class) @Композитный весело AutoSlidingCarousel( модификатор: Модификатор = Модификатор, выравнивание: Выравнивание = Выравнивание.Центр, autoSlideDuration: Long = AUTO_SLIDE_DURATION, itemsCount: Int, pagerState: PagerState = помните { PagerState() }, itemContent: @Composable (индекс: Int) -> Единица измерения ) { LaunchedEffect(pagerState.currentPage) { задержка (autoSlideDuration) pagerState.animateScrollToPage((pagerState.currentPage+1) % itemsCount) } Коробка ( модификатор = modifier.fillMaxWidth(), contentAlignment = выравнивание ) { HorizontalPager(pageCount = itemsCount, состояние = pagerState) {страница -> itemContent(страница) } Поверхность( модификатор = Модификатор .padding(низ = 8.dp) .align(Выравнивание.BottomCenter), форма = Форма Круга, цвет = Color.Black.copy(альфа = 0,5f) ) { DotsIndicator( модификатор = Modifier.padding(горизонтальный = 8.dp, вертикальный = 6.dp), всегоDots = itemsCount, selectedIndex = pagerState.targetPage, selectedSize = 8.dp, unselectedSize = 6.dp ) } } } Я пробовал центрировать изображение в нескольких местах, но ни одно из них не помогло.
Мобильная версия