Как я могу сделать текст автоматически прокручиваемым в Jetpack Compose? ⇐ Android
-
Anonymous
Как я могу сделать текст автоматически прокручиваемым в Jetpack Compose?
Я динамически загружаю текст из списка объектов, которые содержат разный текст от одного объекта к другому. Некоторые текстовые значения достаточно короткие, чтобы поместиться в текстовом представлении, а другие слишком длинные. Таким образом, идея состоит в том, чтобы длинные текстовые значения начинали автоматическую прокрутку влево с удобной для чтения скоростью, то есть после ожидания в 500L миллисекунд, раскрывая зачеркнутый/скрытый текст до последнего символа, а затем останавливаясь до следующего обновление текста, которое, если оно длиннее, чем представление «Текст», должно начинаться с исходной позиции и прокручиваться через 500L миллисекунд, в противном случае оно должно оставаться неподвижным, если это короткий текст.
Я пробовал несколько способов манипулировать кодом, но безрезультатно. Вот пример кода, с которым я работаю: в котором текст прокручивается, но происходит только вручную путем перетаскивания. Я хочу, чтобы он выполнял автоматическую прокрутку после задержки в 500L миллисекунд от времени обновления:
Столбец( модификатор = Модификатор .height(25.dp) .fillMaxSize() .background(color =lideCaptionBg, shape = RoundedCornerShape(16.dp)) .clickable {columnClicked.value = true}, HorizontalAlignment = Alignment.CenterHorizontally, вертикальноеРасположение = Расположение.Центр, ) { val textState = запомнить { Animatable(0f) } val ScrollState = RememberScrollState() LaunchedEffect(Единица измерения) { в то время как (истина) { val targetValue = if (textWidth < 800) (textWidth - 800).toFloat() else 0F textState.animateTo(targetValue,animationSpec = tween(800)) задержка(500л) textState.animateTo(0F, анимацияSpec = tween(800)) задержка(4000л) } } Ряд( модификатор = Модификатор .fillMaxSize() .padding(конец = 8.dp, начало = 8.dp) .width(IntrinsicSize.Min) .horizontalScroll(scrollState) .background(Цвет.Прозрачный), ГоризонтальноеРасположение = Расположение.Центр, вертикальноеВыравнивание = Выравнивание.ЦентрВертикально ) { Текст( текст = stringResource( R.string.song_art_slide_caption, // %s от %s
Я динамически загружаю текст из списка объектов, которые содержат разный текст от одного объекта к другому. Некоторые текстовые значения достаточно короткие, чтобы поместиться в текстовом представлении, а другие слишком длинные. Таким образом, идея состоит в том, чтобы длинные текстовые значения начинали автоматическую прокрутку влево с удобной для чтения скоростью, то есть после ожидания в 500L миллисекунд, раскрывая зачеркнутый/скрытый текст до последнего символа, а затем останавливаясь до следующего обновление текста, которое, если оно длиннее, чем представление «Текст», должно начинаться с исходной позиции и прокручиваться через 500L миллисекунд, в противном случае оно должно оставаться неподвижным, если это короткий текст.
Я пробовал несколько способов манипулировать кодом, но безрезультатно. Вот пример кода, с которым я работаю: в котором текст прокручивается, но происходит только вручную путем перетаскивания. Я хочу, чтобы он выполнял автоматическую прокрутку после задержки в 500L миллисекунд от времени обновления:
Столбец( модификатор = Модификатор .height(25.dp) .fillMaxSize() .background(color =lideCaptionBg, shape = RoundedCornerShape(16.dp)) .clickable {columnClicked.value = true}, HorizontalAlignment = Alignment.CenterHorizontally, вертикальноеРасположение = Расположение.Центр, ) { val textState = запомнить { Animatable(0f) } val ScrollState = RememberScrollState() LaunchedEffect(Единица измерения) { в то время как (истина) { val targetValue = if (textWidth < 800) (textWidth - 800).toFloat() else 0F textState.animateTo(targetValue,animationSpec = tween(800)) задержка(500л) textState.animateTo(0F, анимацияSpec = tween(800)) задержка(4000л) } } Ряд( модификатор = Модификатор .fillMaxSize() .padding(конец = 8.dp, начало = 8.dp) .width(IntrinsicSize.Min) .horizontalScroll(scrollState) .background(Цвет.Прозрачный), ГоризонтальноеРасположение = Расположение.Центр, вертикальноеВыравнивание = Выравнивание.ЦентрВертикально ) { Текст( текст = stringResource( R.string.song_art_slide_caption, // %s от %s
Мобильная версия