我正在制作一个自定义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);
现在,文字被绘制在屏幕的最顶部,随着文字变长,文字会向下翻页。
答案 0 :(得分:1)
经过相当多的搜索,我发现没有做到我想做的事情。所以,在真正的黑客风格中,我创建了自己的解决方案。通过扩展DynamicLayout
类并覆盖getLineTop()
函数,我能够实现我正在寻找的功能。
我发布了source code here。
答案 1 :(得分:0)
我认为首先你获得屏幕的宽度,然后根据你的屏幕尺寸用X y设置文本 那可行 片段正在关注
width=canvas.getWidth();
if(width==720)
{
canvas.drawText(String, x , y, drawText);
}
else if(width==480)
{
canvas.drawText(String, x , (y, drawText);
}
else
{
canvas.drawText(String, x , (y, drawText);
}