2

画面キャンバスで最初の文字列に隣接する 2 番目の文字列を描画したいと考えています。2 番目の文字列の始点は、最初の文字列の幅にする必要があります。Android のpaint.measuretext()方法を使用しました。ただし、実際の幅よりも小さい幅を返します。したがって、2 番目の文字列は最初の文字列と重なっています。文字列の正確な幅を取得する方法を説明できる人はいますか?

testString1 = "44444444444444444444444444444444444444444";
testString2 = "Sample Test String";
canvas.drawText(testString1,0,50, paint);
int textWidth = (int)paint.measureText(testString1);
canvas.drawText(testString2,textWidth,50, paint);
4

1 に答える 1

0

measuretext() は、より正確なメジャラーです。したがって、測定と描画の間にテキスト自体、フォント、フォントサイズ、またはその他の何かを変更しました。

その他の測定方法はこちらもご覧ください。しかし、あまり待たないでください - measuretext は優れた測定器であり、間違いはほぼ確実にあなたの側にあります。

新しい編集: string1+string1 に対して同じ関数を確認します - 結果が前の 2 倍になる場合は? はいの場合 - それは、あるユニットで結果を待っていて、他のユニットで結果を取得していることを意味します。(measuretext はスケーリングされたピクセルで機能します)。また、ペイントまたはキャンバスでは、x、y の設定とテキストの測定に異なる測定を使用する場合があります。

編集 2: エミュレーターによって不適切なスケーリングを定義できます。そこで別の解像度/画面サイズを試してください。結果に影響する場合は、画面解像度の影響を補正できる Paint/Canvas パラメータを見つける必要があります。

于 2012-01-09T22:32:44.177 に答える