
No.1ベストアンサー
- 回答日時:
これは、単純計算ではむずかしいんじゃないでしょうか。
フォントによって大きさが違いますので……。等幅であっても、フォントによって同じフォントサイズでも横幅は異なります。paintでテキストを描画する場合、描画属性を管理するPaintオブジェクトに横幅を得るためのmeasureTextというメソッドがあります。これを使い、そのPaintを利用してテキストを描く際の横幅が得られます。こんな感じです。
Paint paint = new Paint( Paint.ANTI_ALIAS_FLAG);
paint.setTextSize( 24); // サイズ
paint.setColor( Color.BLACK); // 色
float width = paint.measureText( "Hello" ); // テキストの幅を得る
ですので、テキストサイズを適当に設定して横幅を調べ、その値によってまたテキストサイズを変更して横幅を調べ……というようにして、描画するViewの横幅とほぼ同じになる(実際にはプラスマイナスいくつ以内、という感じになるでしょう)Paintを作成して描画する、という感じになるでしょう。
後は、まぁ考え方を切り替えて、あらかじめテキストを描いたイメージを用意し、それを指定した領域内に変形して描画してしまうという手もありますね。
この回答へのお礼
お礼日時:2012/11/29 09:39
一度描画するふりをして幅を計算しなければいけないのですね。
フォントによって横幅が異なるということがそもそもの原因、ということは機種によっても異なるということなのですね。
measureTextは知らなかったのでとても参考になりました。
変形して描画するというのも非常にいい手ですね。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETのSendMessageを教えてく...
-
VB.NET フォーム上に描いたグ...
-
Labelコントロールの背景をグラ...
-
GDI+で描画した画像を消去する...
-
Windows OS/Mozilla系ブラウザ...
-
重なった要素上でのイベントで...
-
Javaで文字の角度を変えて表示...
-
C# DataGridView のCellPaintin...
-
描画処理が実行されない
-
「タイプ初期化子が例外をスロ...
-
レコード件数の表示
-
変数名の付け方
-
Java初級 引数に適用できません
-
エクセルVBAで、条件に一致する...
-
java eclipse 型に解決できません
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
javascriptからjavaを呼び出したい
-
C#の捕捉されない例外処理の対...
-
C# インスタンスの破棄
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NET フォーム上に描いたグ...
-
Java、jPanelに描画する
-
VB.NETのSendMessageを教えてく...
-
SwingとEDT(イベントディスパッ...
-
C# DataGridView のCellPaintin...
-
Javaで文字の角度を変えて表示...
-
JAVAでの背景画像表示
-
複数画像表示切り替え Visual c++
-
イベントディスパッチングスレ...
-
C# リストビューの特定のセルの...
-
iアプリ作成 画像を描画できない
-
BMP画像を画像処理して連続に表...
-
SwingWorkerに関して
-
canvasで表示されてる画像を1...
-
アクセスで他アプリから復帰し...
-
GDI+で描画した画像を消去する...
-
重なった要素上でのイベントで...
-
ドラッグして矩形を描くには
-
Androidで画像の中で指定した範...
-
requestanimationframeを一斉に...
おすすめ情報