У меня есть экран с композиционной функцией с LazyRow внутри.
LazyRow имеет программно бесконечную прокрутку.
Мне нужно: когда пользователь нажимает на Lazylist или прокрутите его, программно прокрутите Do Pause 5 секунд, а затем продолжайте . < /p>
С моей осознанием сначала щелкните Lazylist, останавливает проницательно прокрутку и никогда не перезапускает. И - первый щелчок не попадает в Block onclick . Что я делаю не так? < /P>
@Composable
fun RoommsScreenPart(
modifier: Modifier = Modifier,
uiState: State
) {
val state = rememberLazyListState()
var canScrolling by remember { mutableStateOf(true) }
val density = LocalDensity.current
Box(modifier = modifier) {
if (uiState.items.isNotEmpty()) {
Column {
Text(
text = "Title",
style = AppTheme.typography.title2,
color = AppTheme.colorScheme.onSurface
)
LazyRow(
modifier = Modifier.clickable { canScrolling = false },
state = state,
userScrollEnabled = true,
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(Dp8)
) {
items(
count = Int.MAX_VALUE,
itemContent = {
val index = it % uiState.items.size
Roomm(uiState.items[index])
}
)
}
}
}
LaunchedEffect(Unit) {
snapshotFlow { canScrolling }
.collect {
if (it) {
while (true) {
val needToScrollItems =
uiState.items.size - state.layoutInfo.visibleItemsInfo.size + 1
state.animateScrollBy(
value = needToScrollItems * with(density) { Dp40.toPx() },
animationSpec = tween(
durationMillis = 4000 * needToScrollItems,
easing = LinearEasing
)
)
delay(100)
}
}
}
}
LaunchedEffect(Unit) {
snapshotFlow { canScrolling }
.collect {
if (!it) {
delay(5000)
canScrolling = true
}
}
}
}
}
< /code>
Lazylist Item < /p>
@Composable
private fun Roomm(item: Item) {
Box(
modifier = Modifier
.fillMaxHeight()
.aspectRatio(1f)
.clip(RoundedCornerShape(Dp12))
) {
AsyncImage(
model = ImageRequest.Builder(LocalContext.current)
.data(item.photoLink)
.crossfade(true)
.error(R.drawable.room_large)
.build(),
contentScale = ContentScale.Crop,
contentDescription = null,
modifier = Modifier.fillMaxSize(),
)
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... nly-second
Сначала щелкните Lazylist, не работает только второе место ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1739603378
Anonymous
У меня есть экран с композиционной функцией с LazyRow внутри.
LazyRow имеет программно бесконечную прокрутку.
Мне нужно: когда пользователь нажимает на Lazylist или прокрутите его, программно прокрутите Do Pause 5 секунд, а затем продолжайте . < /p>
С моей осознанием сначала щелкните Lazylist, останавливает проницательно прокрутку и никогда не перезапускает. И - первый щелчок не попадает в Block onclick . Что я делаю не так? < /P>
@Composable
fun RoommsScreenPart(
modifier: Modifier = Modifier,
uiState: State
) {
val state = rememberLazyListState()
var canScrolling by remember { mutableStateOf(true) }
val density = LocalDensity.current
Box(modifier = modifier) {
if (uiState.items.isNotEmpty()) {
Column {
Text(
text = "Title",
style = AppTheme.typography.title2,
color = AppTheme.colorScheme.onSurface
)
LazyRow(
modifier = Modifier.clickable { canScrolling = false },
state = state,
userScrollEnabled = true,
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(Dp8)
) {
items(
count = Int.MAX_VALUE,
itemContent = {
val index = it % uiState.items.size
Roomm(uiState.items[index])
}
)
}
}
}
LaunchedEffect(Unit) {
snapshotFlow { canScrolling }
.collect {
if (it) {
while (true) {
val needToScrollItems =
uiState.items.size - state.layoutInfo.visibleItemsInfo.size + 1
state.animateScrollBy(
value = needToScrollItems * with(density) { Dp40.toPx() },
animationSpec = tween(
durationMillis = 4000 * needToScrollItems,
easing = LinearEasing
)
)
delay(100)
}
}
}
}
LaunchedEffect(Unit) {
snapshotFlow { canScrolling }
.collect {
if (!it) {
delay(5000)
canScrolling = true
}
}
}
}
}
< /code>
Lazylist Item < /p>
@Composable
private fun Roomm(item: Item) {
Box(
modifier = Modifier
.fillMaxHeight()
.aspectRatio(1f)
.clip(RoundedCornerShape(Dp12))
) {
AsyncImage(
model = ImageRequest.Builder(LocalContext.current)
.data(item.photoLink)
.crossfade(true)
.error(R.drawable.room_large)
.build(),
contentScale = ContentScale.Crop,
contentDescription = null,
modifier = Modifier.fillMaxSize(),
)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79440248/first-click-on-lazylist-does-not-working-only-second[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия