Полоса прокрутки в BasicInputField Jetpack Compose ⇐ Android
-
Anonymous
Полоса прокрутки в BasicInputField Jetpack Compose
Я хотел бы добавить полосу прокрутки в BasicTextField, когда текст выходит за границы экрана. Есть ли простой способ добиться этого?
Я пытался реализовать собственное решение, но оно работает неправильно.
@Composable забавный модификатор.simpleVerticalScrollbar( состояние: ScrollState, ширина: Dp = 8.dp ): Модификатор { val targetAlpha = если (state.isScrollInProgress) 1f еще 0f длительность значения = if (state.isScrollInProgress) 150 иначе 500 val альфа от animateFloatAsState( targetValue = targetAlpha, анимацияSpec = tween(durationMillis = продолжительность), label = "" ) вернуть drawWithContent { drawContent() val firstVisibleElementIndex = state.viewportSize val NeedDrawScrollbar = state.isScrollInProgress || альфа > 0,0f // Рисуем полосу прокрутки, если прокручивается или если анимация все еще работает и в ленивом столбце есть контент если (needDrawScrollbar) { val elementHeight = this.size.height/state.maxValue val ScrollbarOffsetY = firstVisibleElementIndex * elementHeight val ScrollbarHeight = state.viewportSize * elementHeight drawRect( цвет = Цвет.Красный, topLeft = Offset(this.size.width - width.toPx(), полоса прокруткиOffsetY), размер = Размер(width.toPx(), полоса прокруткиHeight), альфа = альфа ) } } } Есть ли встроенный способ добиться этого, как в Xml?
Я хотел бы добавить полосу прокрутки в BasicTextField, когда текст выходит за границы экрана. Есть ли простой способ добиться этого?
Я пытался реализовать собственное решение, но оно работает неправильно.
@Composable забавный модификатор.simpleVerticalScrollbar( состояние: ScrollState, ширина: Dp = 8.dp ): Модификатор { val targetAlpha = если (state.isScrollInProgress) 1f еще 0f длительность значения = if (state.isScrollInProgress) 150 иначе 500 val альфа от animateFloatAsState( targetValue = targetAlpha, анимацияSpec = tween(durationMillis = продолжительность), label = "" ) вернуть drawWithContent { drawContent() val firstVisibleElementIndex = state.viewportSize val NeedDrawScrollbar = state.isScrollInProgress || альфа > 0,0f // Рисуем полосу прокрутки, если прокручивается или если анимация все еще работает и в ленивом столбце есть контент если (needDrawScrollbar) { val elementHeight = this.size.height/state.maxValue val ScrollbarOffsetY = firstVisibleElementIndex * elementHeight val ScrollbarHeight = state.viewportSize * elementHeight drawRect( цвет = Цвет.Красный, topLeft = Offset(this.size.width - width.toPx(), полоса прокруткиOffsetY), размер = Размер(width.toPx(), полоса прокруткиHeight), альфа = альфа ) } } } Есть ли встроенный способ добиться этого, как в Xml?
Мобильная версия