テキストが表示幅を超えている場合に自動でスクロールして表示する機能の実装
Jetpack Compose 1.4.0でbasicMarqueeが追加されているのですごく簡単に実装できます
Modifierやばいですね
Text("長いテキスト1234567890",
modifier = Modifier
.width(80.dp)
.basicMarquee(
animationMode = MarqueeAnimationMode.Immediately,
spacing = MarqueeSpacing(0.dp)
),
maxLines = 1,
)自分で実装する場合はこんな感じかと
※ループ表示はできませんが…
val state = rememberScrollState(0)
LaunchedEffect(Unit) {
while (true) {
val move = 2
val pos = if (state.value + move > state.maxValue) 0 else state.value + move
state.scrollTo(pos)
delay(50)
yield()
}
}
Text("長いテキスト1234567890",
modifier = Modifier
.width(80.dp)
.horizontalScroll(state),
maxLines = 1,
//overflow = TextOverflow.Visible
)
Android Studio Hedgehog 2023.1.1 RC 3 built on November 3, 2023
