私はキャンバスとペイントで始まります。私はキャンバスにテキストをペイントしたいが、オリジナルのビットマップよりも長くすることができる。テキストはビットマップに出ます。キャンバスと複数行にテキストを描画します
最後に達したときに新しい行を作成するための自動管理機能がありますか?または私は高さと距離で遊ぶべきですか?おかげで
私はキャンバスとペイントで始まります。私はキャンバスにテキストをペイントしたいが、オリジナルのビットマップよりも長くすることができる。テキストはビットマップに出ます。キャンバスと複数行にテキストを描画します
最後に達したときに新しい行を作成するための自動管理機能がありますか?または私は高さと距離で遊ぶべきですか?おかげで
はい、あなたがこれを管理することができますStaticLayoutまたはDynamicLayout
私はあなたにもここで見つけ、このコードスニペットを見ていることを示唆している:それはあなたのテキストの執筆内を管理するうように https://stackoverflow.com/a/15092729/1759409
一定の幅と高さを持ち、自動的にキャンバス上に自動的に描画します。
最良の方法はStaticLayoutでテキストを描画することです:
// init StaticLayout for text
StaticLayout textLayout = new StaticLayout(
gText, paint, textWidth, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
// get height of multiline text
int textHeight = textLayout.getHeight();
// get position of text's top left corner
float x = (bitmap.getWidth() - textWidth)/2;
float y = (bitmap.getHeight() - textHeight)/2;
// draw text to the Canvas center
canvas.save();
canvas.translate(x, y);
textLayout.draw(canvas);
canvas.restore();
詳細はmy blogpostを参照してください。
Swingを使用しても構わない場合は、[JTextArea](http://docs.oracle.com/javase/6/docs/api/javax/swing/JTextArea.html)を使用して、複数行のテキスト表示を管理しますあなたのために。 CanvasはAWTヘビー級オブジェクトで、軽量のコントロールと混在するのが難しい場合があります。 JTextAreaは軽量なので、問題が少なくなります。 –