0

以下のような状況があります

ここに画像の説明を入力

私の線形レイアウトでは、キャンバスを含む 1 つのビュー (MyView) を追加しました

drawLayout.addView(new MyView(this,"a"));

今、私は linearlayout の途中でキャンバスに 1 つのテキストを描画したいので、linearlayout の高さと幅 (drawWidth,drawHeight) を計算してから、これを書きました。

canvas.drawText(letterTOdraw,drawWidth/2,drawHeight/2,mpaint);

しかし、それは正しく描画されませんでした (中心ではありません)。その後、以下のように変更します

canvas.drawText(letterTOdraw,canvas.getWidth()/2,canvas.getHeight()/2,mpaint);

しかし、何も変わりませんでした。キャンバスの高さと幅を計算すると、 600 X 1024 が返されたことに驚いています.

したがって、linearLayout の中央にテキストを描画できません。

過去 5 時間、この問題で立ち往生しています。これから抜け出すのを手伝ってください。

4

1 に答える 1

0

センタリング コードが間違っています。コードは、テキストを中央ではなく、少し下と右に描画します。キャンバスの中央は、テキストの左上のポイントになります。

テキストを中央に描画する場合は、テキストのサイズを考慮する必要があります-((canvas.getWidth() - letterWidth) /2, (canvas.getHeight() - letterHeight) / 2))

于 2012-12-26T10:36:07.103 に答える