Сначала щелкните Lazylist, не работает только второе местоAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Сначала щелкните Lazylist, не работает только второе место

Сообщение 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(),
)
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... nly-second
Ответить

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

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

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

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

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