我正在使用自定义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

07-25 21:06