2012-02-23 4 views
0

こんにちは私のアプリケーションはキャンバスのテキストを描画しています。例えば、テキストのどのようにアンドロイドキャンバスにテキストの幅を合わせるには?

= 「お元気ですか」lenghthy text.itは外行くようにテキストが= 「こんにちはこんにちはどのようにしている」一方、その正確canvas.butに収まるcanvas.anybodyが親切に助けて形成私は事前に感謝しています!

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

答えて

0
int IMAGE_WIDTH = text.length(); 

canvas1.drawBitmap(resizeImage1、IMAGE_WIDTH、5、NULL);

+0

再びそれは私がビットマップのサイズの画像が – Mercy

0

ビットマップの幅を超過していると非常に厄介です。

各キャンバスにはビットマップが関連付けられているため、ビットマップの幅はテキストの幅より小さくなることがあります。

テキストを描画しようとすると、ビットマップの境界を越えているため、残りのテキストを見ることができません。

ビットマップのサイズを大きくしてみてください。

+0

午前のように見える、私は明らかにテキストを表示することはできません.dynamically私はテキストを追加しました。 – Mercy

+0

影響を受けているcange場合減らす場合は、フォントサイズ( 'setTextSize') – bluefalcon

+0

を減らすことができ、画像やテキストのキャンバスを追加するこの – Mercy

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(); 
+0

getTextHeightメソッドのコードを追加してください –