You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Compose Desktop中RTL布局下basicMarquee()文本滚动异常问题

Compose Desktop RTL文本basicMarquee滚动异常修复方案

针对你遇到的RTL长文本使用basicMarquee时的两个问题,可通过以下方式修复:

问题原因

basicMarquee默认适配LTR(从左到右)布局逻辑,直接用于RTL文本时,滚动方向、起始位置和循环间隔的默认设置会与RTL排版逻辑冲突,导致异常。

修复代码

CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) {
    Text(
        maxLines = 1,
        text = "این یک متن طولانی با قابلیت جابجایی است",
        textDirection = TextDirection.Rtl,
        modifier = Modifier
            .fillMaxWidth()
            .basicMarquee(
                reverseDirection = true,
                spacing = MarqueeSpacing(0.dp),
                initialDelayMillis = 0
            )
    )
}

参数说明

  • CompositionLocalProvider设置全局RTL布局方向:确保组件的布局计算逻辑完全适配从右到左的排版规则
  • textDirection = TextDirection.Rtl:明确文本自身的排版方向,让RTL文本从容器右侧开始显示,匹配用户预期的"开头"位置
  • reverseDirection = true:反转marquee的滚动方向,使文本从RTL的起始位置(右侧)开始向左滚动,解决"未从开头滚动"的问题
  • spacing = MarqueeSpacing(0.dp):消除滚动循环时的默认间隔,解决文本回到起始位置后消失数秒的问题
  • initialDelayMillis = 0:可选参数,去掉滚动前的初始等待,让文本立即开始滚动(可根据需求调整数值)

内容的提问来源于stack exchange,提问作者Self Mp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:45:53