[英]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.