我正在使用自定义View
,其中包含要锚定到画布底部的经常更新的文本。
文本长度也会发生变化,我希望将其换行,并在需要更多行时将其向上移动到屏幕上。 (因此,DynamicLayout
似乎是自动执行此操作的可靠选择)
但是,我在文档中看不到任何有关指定在画布上绘制文本的位置或应该“增长”的方向的选项。
这是我的初始化:
TextPaint subtleTextPaint = new TextPaint();
DynamicLayout dl = new DynamicLayout(text,subtleTextPaint,getWidth()
,Layout.Alignment.ALIGN_CENTER,1,0,true);
在
onDraw()
中,我只需将画布传递给DynamicLayout
对象,如下所示:dl.draw(c);
现在,文本绘制在屏幕的最上方,随着文本变长,文字自动换行。
最佳答案
经过一番搜索,我什么都没找到。因此,我以真正的黑客风格创建了自己的解决方案。通过扩展DynamicLayout
类并覆盖getLineTop()
函数,我能够实现所需的功能。
我已经发布了source code here。