Android 文本视图到位图,对齐问题

Android 文本视图到位图,对齐问题,android,android-canvas,textview,android-bitmap,Android,Android Canvas,Textview,Android Bitmap,我面临的情况是,我需要为给定的文本绘制位图。我尝试用所需的属性渲染TextView,然后使用画布绘制其位图。我的尝试如下所示: TextView nameTv = new TextView(context); Bitmap bmp = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bmp); nameTv.layout(0, 0, 200, 200); nameTv.setG

我面临的情况是,我需要为给定的文本绘制位图。我尝试用所需的属性渲染TextView,然后使用画布绘制其位图。我的尝试如下所示:

TextView nameTv = new TextView(context);
Bitmap bmp = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);

nameTv.layout(0, 0, 200, 200);
nameTv.setGravity(Gravity.CENTER);
nameTv.setText("Test");
nameTv.setBackgroundColor(Color.RED);

nameTv.draw(canvas);
int measureSpecWidth = MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY);
int measureSpecHeight = MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY);
nameTv.measure(measureSpecWidth, measureSpecHeight);
这段代码的问题是TextView上的文本没有居中对齐,这是我需要的。 欢迎提出任何建议:)

谢谢,
我想问题出在测量上。你们并没有要求那个尺寸,也并没有合适的尺寸。在layout()之前调用nameTv.measure()

将度量称为这样的度量:

TextView nameTv = new TextView(context);
Bitmap bmp = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);

nameTv.layout(0, 0, 200, 200);
nameTv.setGravity(Gravity.CENTER);
nameTv.setText("Test");
nameTv.setBackgroundColor(Color.RED);

nameTv.draw(canvas);
int measureSpecWidth = MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY);
int measureSpecHeight = MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY);
nameTv.measure(measureSpecWidth, measureSpecHeight);

nameTv.measure()不起作用。现在文本是右上对齐的,而不是居中对齐。您传递给度量方法的参数是什么?我调用了nameTv。度量(200200)我很乐意看到:)。@Ammar我更新了我的答案。另外,我建议你读一下这篇文章