Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在画布上绘制文本不使用可变位图_Android_Google Maps_Canvas_Bitmap_Mutable - Fatal编程技术网

Android 在画布上绘制文本不使用可变位图

Android 在画布上绘制文本不使用可变位图,android,google-maps,canvas,bitmap,mutable,Android,Google Maps,Canvas,Bitmap,Mutable,我想在我的Android应用程序中使用谷歌地图上的自定义标记。 为此,我有一个方法,可以创建位图。每个位图都是一个包含特殊文本的标记。 我已经这样做了,它在我的2.3.3安卓上运行正常。但是在其他设备上它崩溃了,因为我不使用可变位图。 我将代码更改为可变位图,但现在文本不可见,只有没有文本的标记位图 我的方法: Bitmap bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.marker); Typefac

我想在我的Android应用程序中使用谷歌地图上的自定义标记。 为此,我有一个方法,可以创建位图。每个位图都是一个包含特殊文本的标记。 我已经这样做了,它在我的2.3.3安卓上运行正常。但是在其他设备上它崩溃了,因为我不使用可变位图。 我将代码更改为可变位图,但现在文本不可见,只有没有文本的标记位图

我的方法:

Bitmap bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.marker);

Typeface tf = Typeface.create("Helvetica", Typeface.BOLD);

Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
paint.setTypeface(tf);
paint.setTextAlign(Paint.Align.CENTER);
paint.setTextSize(convertToPixels(context, 8));

Rect textRect = new Rect();
paint.getTextBounds(markerText, 0, markerText.length(), textRect);
// THIS LINE IS NEW FOR MUTABLE
Bitmap mutableBitmap = bm.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(mutableBitmap);

if(textRect.width() >= (canvas.getWidth() - 4)){
    paint.setTextSize(convertToPixels(context, 7));
}
int xPos = (canvas.getWidth() / 2) - 2;
int yPos = (int) ((canvas.getHeight() / 2) - ((paint.descent() + paint.ascent()) / 2)) ;

canvas.drawText(markerText, xPos, yPos, paint);

return  bm;
我做错了什么?我只是用mutable添加行


致以最诚挚的问候

您的方法返回使用
BitmapFactory.decodeResource()
获得的不可变位图

您必须返回在其上绘制的可变位图:

return mutableBitmap;

您是否尝试过返回可变位图而不是bm?是的,这就是问题所在。答案标记为已解决。thx伙计们。