如何在android画布中调整文本宽度?

时间:2012-02-23 09:56:13

标签: android text android-canvas

我的应用程序是在画布中绘制文本它的工作正常。我的文本很大的问题是在画布之外。

例如text = “你好吗”它正确地适合画布。但是当text = “你好,你好吗” 像lenghthy text.it走出画布外面。有人帮助我。谢谢你!

        canvas1.drawColor(Color.BLACK);
        canvas1.drawBitmap(resizeImage1,10,5, null);
        paint.setStyle(Paint.Style.FILL);
        paint.setAntiAlias(true);
        paint.setTextSize(25);
        paint.setColor(Color.BLUE);
        paint.setFakeBoldText(true);
        paint.setTextSize(30);
        canvas1.drawText(mytext, 10,175, paint);

3 个答案:

答案 0 :(得分:1)

使用静态布局,即使您通过自动对齐文本将文本增加一些限制,也会自动对齐文本。

    Rect bounds = new Rect(x1, y1, x2, y2);// set the bounds
    String textOnCanvas = "text to be wriiten";
    StaticLayout sl = new StaticLayout(textOnCanvas, textPaint,
            bounds.width(), Layout.Alignment.ALIGN_CENTER, 1, 1, true);
    canvas.save();
    float textHeight = getTextHeight(textOnCanvas, textPaint);
    int numberOfTextLines = sl.getLineCount();
    float textYCoordinate = bounds.exactCenterY() -
            ((numberOfTextLines * textHeight) / 2);

    //text will be drawn from left
    float textXCoordinate = bounds.left;
    canvas.translate(textXCoordinate, textYCoordinate);
    //draws static layout on canvas
    sl.draw(canvas);
    canvas.restore();

答案 1 :(得分:0)

int IMAGE_WIDTH = text.length();

canvas1.drawBitmap(resizeImage1,IMAGE_WIDTH,5,null);

答案 2 :(得分:0)

非常坦率地说你超过了位图的宽度。

每个画布都有一个与之关联的位图,位图的宽度可能小于文本的宽度。

因此,当您尝试绘制文本时,它将超出位图的边界,因此您无法看到文本的其余部分。

尝试增加位图的大小。