Автопрокрутка карусели не работает, когда она фокусируется на создании реактивного ранца.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Автопрокрутка карусели не работает, когда она фокусируется на создании реактивного ранца.

Сообщение Anonymous »

У меня возникла проблема с Каруселью. Здесь я делюсь своим кодом. В этом коде я хочу выполнить автоматическую прокрутку своих изображений.
Когда я фокусирую любое другое представление вокруг карусели, автопрокрутка в это время будет работать правильно, как и ожидалось, но когда я перемещаю фокус на карусель, в этот раз происходит автопрокрутка. остановится. И снова переместите фокус на любое другое представление, чтобы снова работать нормально.
Я хочу автоматически прокручивать все изображения, не останавливая функции автопрокрутки, где фокус меня не волнует, нужна только автопрокрутка.< /p>
Что мне попробовать дальше?
Мой код

Код: Выделить всё

@ExperimentalTvMaterial3Api
@Composable
fun HeroBanner(
focusRequesters: MutableMap
, FocusRequester>,
categoryItem: HomeLayout.CategoryItem,
cateItems: List?,
onFocusChange: (focusState: FocusState, pos: Int) -> Unit,
goToVideoPlayer: (pos: Int, item: HomeLayout.CategoryItem.Item) -> Unit,
) {
val carouselHeight = LocalConfiguration.current.screenHeightDp.dp.times(0.60f)
var carouselCurrentIndex by rememberSaveable { mutableIntStateOf(0) }
val carouselState = rememberCarouselState()
var isCarouselFocused by remember { mutableStateOf(false) }
LaunchedEffect(carouselState.activeItemIndex) {
carouselCurrentIndex = carouselState.activeItemIndex
}
val fr = remember { FocusRequester() }
focusRequesters[Pair(categoryItem.id, 0)] = fr
if (cateItems != null) {
Spacer(modifier = Modifier.height(20.dp))
cateItems.sortedBy { it.priority }
AnimatedContent(targetState = cateItems,
label = "Featured Carousel animation",
modifier = Modifier
.fillMaxWidth()
.height(carouselHeight)
.padding(start = 20.dp, end = 20.dp)
.focusRequester(fr)
.onFocusChanged {
onFocusChange(it, 0)
// Because the carousel itself never gets the focus
isCarouselFocused = it.hasFocus
}) { itemState ->
Carousel(modifier = Modifier
.onFocusChanged {
Log.e("TAG", "HeroBanner: focus ${it.isFocused}")
//                    onFocusChange(it, 0)
}
.fillMaxSize()
.semantics {
contentDescription = "MoviesCarousel"
}
.handleDPadKeyEvents(onEnter = {
goToVideoPlayer(
carouselState.activeItemIndex,
cateItems[carouselState.activeItemIndex]
)
}),
itemCount = itemState.size,
carouselState = carouselState,
carouselIndicator = {
Box(modifier = Modifier
.padding(10.dp)
.graphicsLayer {
clip = true
shape = ShapeDefaults.ExtraSmall
}
.align(Alignment.BottomEnd)) {
CarouselDefaults.IndicatorRow(
modifier = Modifier
.align(Alignment.BottomEnd)
.padding(8.dp),
itemCount = itemState.size,
activeItemIndex = carouselState.activeItemIndex,
)
}
},
contentTransformStartToEnd = CarouselDefaults.contentTransform,
contentTransformEndToStart = CarouselDefaults.contentTransform,
autoScrollDurationMillis = 5000,
content = { index ->
val item = remember(index) { itemState[index] }
HeroBannerContent(item = item, categoryItem = categoryItem) {
goToVideoPlayer(carouselState.activeItemIndex, item)
}
})
}
Spacer(modifier = Modifier.height(10.dp))
}
}
Здесь, когда журнал: HeroBanner: focus false
В этот раз автопрокрутка будет работать нормально.
но когда затем я перемещаю фокус на карусель
Журнал: HeroBanner: фокус истинный
Так что теперь автопрокрутка остановится.
Мое требование — автоматическая прокрутка продолжается даже при фокусе карусели или нет.
Примечание. Этот код предназначен для приложения Android Tv.

Подробнее здесь: https://stackoverflow.com/questions/785 ... ck-compose
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»