如何在画布Android上将文本中心左对齐

时间:2012-11-09 07:54:23

标签: java android xml android-manifest

我正在开发摄影应用程序,为此我使用此代码:

Canvas canvas = new Canvas(bmOverlay);
TextPaint paint = new TextPaint();
paint.setColor(Color.RED);
paint.setTextAlign(Align.CENTER);
paint.setTextSize(50);
paint.setFlags(Paint.ANTI_ALIAS_FLAG);
// if the background image is defined in main.xml, omit this line
canvas.drawBitmap(mBitmap, 0, 0, null);
int left = measureTextWidth(paint, InstaTextActivity.CurrentWord);
int top = measureTextHeight(paint, InstaTextActivity.CurrentWord);

left = mBitmap.getWidth() / 2 - InstaTextActivity.textCount / 2;
top = mBitmap.getHeight() / 2 - InstaTextActivity.textCount / 2;
StaticLayout layout = new StaticLayout(InstaTextActivity.CurrentWord, paint, total,
 android.text.Layout.Alignment.ALIGN_NORMAL, (float) 1.0, (float) 0.0, true);
//canvas.save();
canvas.translate(left, top);
layout.draw(canvas);
//canvas.restore();

在此代码中,我使用paint.setTextAlign(Align.CENTER)。它与中心对齐,但文本不会从中心向左对齐,而是从中心向右对齐。另外,在画布上对齐文本的正确方法是什么?

enter image description here

但我想要

enter image description here

1 个答案:

答案 0 :(得分:6)

我正在使用

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

将我的多行文字置于画布中心