Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.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_Canvas_Bitmap_Google Maps Markers - Fatal编程技术网

Android 在位图前面绘制自动调整文本

Android 在位图前面绘制自动调整文本,android,canvas,bitmap,google-maps-markers,Android,Canvas,Bitmap,Google Maps Markers,我想在标记图像前绘制文本。但是文本超出了图像的边界。我可以自动调整文本吗?如果是,请给我一个实际的例子。 我使用以下代码来绘制文本 paint.setTextSize((int) (11 * scale)); // text shadow paint.setShadowLayer(1f, 0f, 1f, Color.WHITE); // draw text to the Canvas center Rect bounds = new Rect();

我想在标记图像前绘制文本。但是文本超出了图像的边界。我可以自动调整文本吗?如果是,请给我一个实际的例子。 我使用以下代码来绘制文本

    paint.setTextSize((int) (11 * scale));
    // text shadow
    paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);

    // draw text to the Canvas center
    Rect bounds = new Rect();
    paint.setTextAlign(Align.CENTER);

    paint.getTextBounds(gText, 0, gText.length(), bounds);

        int x=20;
        int y=15;
    canvas.drawText(gText, x * scale, y * scale, paint);
它显示以下输出

如何调整文本

private TextPaint mTp;
private String mText;
private final static float TEXT_SIZE = 30;
private void drawingSettings()
{
mTp = new TextPaint(Paint.ANTI_ALIAS_FLAG);
mTp.setStyle(Paint.Style.FILL);
mTp.setColor(0xFFCCCCCC);
mTp.setTextSize(TEXT_HEIGHT);

mText = "some text"
}

@Override
public void onDraw(Canvas canvas)
{
 int bmpWidth = mBitmap.getWidth();
 int textWidth = mTp.mesureText(mText);

 float textSize = TEXT_SIZE;

 while(mTp.mesureText(text)>bmpWidth)
 {
   textSize-1;
   mTp.setTextSize(textSize);
 }
 float xPos = 0;
 float yPos = 0;
 canvas.drawText(mText,xPos,yPos,mTp);
}

<>注意,当优化时,应考虑在OnDew函数之外移动文本大小计算。 它总是显示相同大小的文本,而不适用于较大的文本