通过在画布上书写在TextView上显示文本-修剪文本

问题描述 投票:-1回答:1

在我的一个项目中,我试图通过使用自定义绘制方法将文本写到画布上来在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)
.....

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

android textview android-canvas
1个回答
0
投票

在花了一些时间之后,我发现有一个重力场使渲染混乱。

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

© www.soinside.com 2019 - 2024. All rights reserved.