如何将DynamicLayout锚定到画布底部?

时间:2013-02-01 11:40:47

标签: android android-layout android-view

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

现在,文字被绘制在屏幕的最顶部,随着文字变长,文字会向下翻页。

2 个答案:

答案 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);
        }