0

我有一个 TextView tv,我在上面写了一些文字。然后从 TextView 中提取一个位图,然后将这个位图绘制在画布上。我希望 TextView 中的文本垂直和水平居中,为此我使用 tv.setGravity(Gravity.CENTER)。然而,文本最终仅水平居中。以下是创建 TextView 并设置所有参数的代码:

tv.layout(0, 0, displayWidth, displayHeight);
tv.setTextSize(60);
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.GREEN);
tv.setGravity(Gravity.CENTER);
tv.setText(text);
tv.setDrawingCacheEnabled(true);
textBmp = tv.getDrawingCache().copy(Bitmap.Config.ARGB_8888, true);
tv.setDrawingCacheEnabled(false);

这就是我如何将它绘制到我的画布中

protected void onDraw(Canvas canvas) {

        canvas.drawBitmap(textBmp, 0, 0, null);

    }
}

我该怎么做才能使文本也垂直居中。在此处输入图像描述

4

1 回答 1

0

您的以下行可能是问题所在:

tv.layout(0, 0, displayWidth, displayHeight);

布局函数的文档说明如下:

public void layout (int l, int t, int r, int b)

Parameters: 
l : Left position, relative to parent
t : Top position, relative to parent 
r : Right position, relative to parent
b : Bottom position, relative to parent 

因此,您要求您TextView与父母的顶部和左侧保持距离。

于 2013-10-16T23:59:42.073 回答