如何在画布上垂直居中放置文本

时间:2019-03-31 14:05:48

标签: android canvas layout

我设法使用Align.CENTER将文本水平居中。 但它不会使文本垂直居中。

paint.setTextAlign(Align.CENTER);
canvas.drawText(text, fx, fy, paint);

如何使文本垂直居中?

2 个答案:

答案 0 :(得分:0)

Align.CENTER用于水平对齐。如果要垂直居中,则需要找到文本的最大高度,然后通过使用canvas.translate

垂直平移在画布内垂直放置

答案 1 :(得分:0)

 StaticLayout yourLayout = new StaticLayout(text, mTextPaint,
            canvas.getWidth(), Alignment.ALIGN_NORMAL, 1.0f, 0.0f,
            false);
 canvas.translate((canvas.getWidth() / 2) - (yourLayout.getWidth() / 2), (canvas.getHeight() / 2) - ((yourLayout.getHeight() / 2)));

这对我有用。