我正面临一种情况,我需要为给定的文本绘制位图。我尝试使用必需的属性渲染TextView,然后使用canvas绘制其位图。我的尝试看起来像这样:
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);
此代码的问题是TextView上的文本不是中心对齐的,这是我需要的。 欢迎任何建议:)
谢谢, 阿马尔
答案 0 :(得分:2)
我认为问题出在测量上。您没有为此调用度量,并且它没有正确的大小。在layout()之前调用nameTv.measure()。
调用这样的措施:
int measureSpecWidth = MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY);
int measureSpecHeight = MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY);
nameTv.measure(measureSpecWidth, measureSpecHeight);