【问题标题】:Draw auto adjustable text infront of bitmap在位图前面绘制可自动调整的文本
【发布时间】:2013-08-28 15:55:43
【问题描述】:

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

    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);

它显示以下输出

如何调整文字?

【问题讨论】:

    标签: android canvas bitmap google-maps-markers


    【解决方案1】:
    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);
    }
    

    注意,在优化时,您应该考虑将文本大小计算移到 onDraw 函数之外。

    【讨论】:

    • 它总是显示相同大小的文本,不适用于更大的文本
    猜你喜欢
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多