在我的应用程序之一的android 4.4上发生了一些奇怪的事情。我正在使用自定义视图,其中我使用Typeface.createFromAsset
设置自定义字体。如上图所示,渲染在设备/模拟器上工作正常。当我将自定义视图的内容保存为位图时,会出现问题:
Bitmap currentBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(currentBitmap);
view.draw(canvas);
Android上的一切正常< 4.4。保存的图像与屏幕上可见的图像相同。但是,在4.4我只看到字体边框,文本内部是透明的。 我该如何解决这个问题?
答案 0 :(得分:5)
在API 19及更高版本的画布上绘制文本时,您必须注意正在使用的Paint对象的笔触和填充。在Android的早期版本中,即使使用笔触样式,也始终绘制文本。在KitKat中,将样式设置为笔划就可以完成此操作;抚摸文本而不是填充它。在渲染文本时,您需要手动设置要填充的绘画样式,然后将其重新设置为笔划以绘制其他内容(如果这是您正在尝试执行的操作)。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mTextPaint.setStyle(Style.STROKE);
// do other setup on Paint object
// Draw non-text stuff
mTextPaint.setStyle(Style.FILL);
// do other setup on Paint object
// Draw all the text stuff
}