1

我正在处理一个自定义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);

现在,文本绘制在屏幕的最顶部,随着文本变长,文字会向下换行。

4

2 回答 2

1

经过相当多的搜索,我没有找到任何我想要的东西。所以,以真正的黑客风格,我创建了自己的解决方案。通过扩展DynamicLayout类并覆盖getLineTop()函数,我能够实现我正在寻找的功能。

我已经在这里发布了源代码

于 2013-02-05T08:38:34.997 回答
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);
        }
于 2013-02-01T11:47:00.180 回答