gpt4 book ai didi

带有 SpannableString 的 Android Canvas drawText

转载 作者:搜寻专家 更新时间:2023-11-01 08:34:41 26 4
gpt4 key购买 nike

我使用 Canvas.drawText() 制作了一个自定义的 View 来绘制一些 SpannableString

当文本包含我制作的表情符号时,我调用 SpannableString.setSpan()(我不喜欢默认样式的表情符号)。我发现 Canvas.drawText() 不绘制我设置的跨度,而是绘制默认样式的表情符号。我试图通过相同的 SpannableString 调用 TextView.setText() 并且它有效。我想使用 Canvas 来绘制文本以提高性能(否则,在 ListView 中滚动时新建几个 TextView 会导致严重的性能问题)。如何使用 Canvas 绘制 SpannableString

抱歉我的英语不好,我不是母语人士。感谢您的提前!

编辑:实际上我制作了这个自定义的 View 以显示文本转换的动画。多个文本将水平穿过屏幕。我遇到的问题是 TextView 的 draw 方法导致时间过多并且动画看起来很糟糕。所以我想直接用Canvas绘制文字。遗憾的是,我切换到 StaticLayout 时仍然发现动画不稳定。

最佳答案

您可以尝试将您的 Spannable 添加到 StaticLayout 并将其绘制到 Canvas

像这样:

StaticLayout layout = new StaticLayout(yourSpannable, yourPaint,
yourCanvas.getWidth(), Alignment.ALIGN_NORMAL, 1, 0, false);
layout.draw(yourCanvas);

关于带有 SpannableString 的 Android Canvas drawText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37770493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com