有没有办法在 Wear OS 磁贴中创建选取框文本?

问题描述 投票:0回答:1

我正在使用适用于 Wear OS 的 Jetpack Compose,并且正在创建一个图块,我想在其上显示一些字幕文本 - 就像新闻收报机一样。 有办法做到这一点吗?

我尝试创建一个这样的函数:

@ExperimentalFoundationApi
private fun marqueeText(context: Context, text: String): LayoutElementBuilders.LayoutElement =
    LayoutElementBuilders.Column.Builder()
        .setWidth(DimensionBuilders.DpProp.Builder().setValue(100f).build())
        .setModifiers(ModifiersBuilders.Modifiers.Builder()
            .apply { Modifier.basicMarquee(
                iterations = Int.MAX_VALUE,
                animationMode = MarqueeAnimationMode.Immediately,
                delayMillis = 0,
                initialDelayMillis = 0,
                spacing = MarqueeSpacing.fractionOfContainer(0.9f),
                velocity = 0.dp
            ) }
            .build())
        .addContent(Text.Builder(context, text)
            .setTypography(Typography.TYPOGRAPHY_CAPTION2)
            .build()
        )
        .build()

但这不起作用。文本显示但不滚动。

android kotlin android-jetpack-compose wear-os
1个回答
0
投票

正如 @dect 的评论中提到的,您正在寻找的行为(至少目前)不受支持。

图块不适合任何类型的自定义动画。它们被设计为以分钟为间隔进行更新,最有可能最大限度地减少对电池寿命的影响。您可以强制提高刷新率,但任何低于 5 秒的刷新率往往会变得不可预测。相信我,我已经尝试过了...

在 Tile 中接近实时内容更新的最佳(也许是唯一?)方法是使用 动态表达式

内容更新动画相结合,这为您提供了一种以美观的方式显示新数据的方式,而不会浪费宝贵的电量。

不幸的是,我想不出一种方法将两者结合起来以实现您正在寻找的股票效果。希望上面的链接至少可以启发您提出一个可接受的替代解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.