我正在开发一个自定义 View
,其中包含我想固定在 Canvas 底部的经常更新的文本。
文本长度也发生变化,我希望它换行,在需要更多行时向上移动屏幕。 (DynamicLayout
因此似乎是自动化的可靠选择)
但是,我在文档中没有看到任何关于指定在我的 Canvas 上绘制文本的位置或文本应该“增长”的方向的选项。
这是我的初始化:
TextPaint subtleTextPaint = new TextPaint();
DynamicLayout dl = new DynamicLayout(text,subtleTextPaint,getWidth()
,Layout.Alignment.ALIGN_CENTER,1,0,true);
在 onDraw()
中,我只是将 Canvas 传递给 DynamicLayout
对象,如下所示:
dl.draw(c);
现在,文本绘制在屏幕的最顶部,并随着文本变长而向下换行。
最佳答案
经过相当多的搜索,我没有找到任何符合我要求的东西。因此,以真正的黑客风格,我创建了自己的解决方案。通过扩展 DynamicLayout
类并覆盖 getLineTop()
函数,我能够实现我正在寻找的功能。
我已经发布了 source code here .
关于android - 如何将 DynamicLayout 锚定到 Canvas 底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14645524/