首页 > 解决方案 > 通过在画布上写入在 TextView 上显示文本 - 文本被修剪

问题描述

在我的一个项目中,我试图通过使用自定义绘制方法将文本写入画布来在 TextView 上显示文本。但是文本的顶部正在被修剪。我可以在文本视图的下半部分看到一些空白区域。这使我认为我正在画布之外写文本。但是我在写作之前将画布原点设置为(0,0)。

 @Override
    public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom,
            @NonNull Paint paint)
    {
        if (start >= end) {
            return;
        }

            canvas.save();
            canvas.translate(0,0);

            final List<Strings> elements = mUtil.getElements();
            int y1 = 0;

            for(final String element: elements) {
                canvas.drawText(element,
                        start,
                        end,
                        0,
                        y1,
                        paint);
                y1 += mUtil.getLineHeight();
            }
    }



In the above code, I am writing each line at (x,y).
Line 1 (x, y) = (0,0)
Line 2 (x, y) = (0, lineHeight)
Line 3 (x, y) = (0, lineHeight*2)
.....

但在屏幕上,我只能看到一半的文字被剪掉了。有人可以纠正我对将文本写入canavs的理解。在我的互联网搜索历史中,我发现画布是一个二维平面图,左上角为 (0,0),右下角为 (n,m)(其中 n,m 是非常大的数字)。所以我开始在 (0,0) 处写文本,但它被修剪掉了:(

标签: androidtextviewandroid-canvas

解决方案


在画布上花了一些时间后,我发现有一个重力场会破坏渲染。

对于纯 TextView,我们可以从 (0, ascent) 开始在 canvase 上进行渲染。由于文本渲染从上升点开始。


推荐阅读