繁体   English   中英

带有SpannableString的Android Canvas drawText

[英]Android Canvas drawText with SpannableString

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

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

对不起,我的英语不好,我不是母语人士。 感谢前进!

编辑:实际上,我制作了此自定义View ,以显示文本过渡的动画。 屏幕上会水平显示几个文本。 我遇到的问题是TextView的draw方法导致太多时间,并且动画看起来很糟糕。 所以我想直接使用Canvas绘制文本。 可悲的是,我切换到StaticLayout ,但仍然发现动画StaticLayout生涩。

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

像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM