0

全画面表示のレイアウト内にテキストを描画したいのですが、問題は正確なポイントを取得できることです。これが私がコーディングしたものです:

 DisplayMetrics display = getResources().getDisplayMetrics();
                    int width = display.widthPixels;
                    String data_azi = DateFormat.getDateTimeInstance().format(new Date()); 
                    cnv.drawText(data_azi, width - p.measureText(data_azi), 40,p);
4

1 に答える 1

1

事前に測定し、描画時にその測定値を使用する必要があります。たとえばmeasureText()、初期化時に呼び出すことができます。このメソッドは、現在の日付の幅を測定し、測定された幅に 20% を追加します。

private final Rect mBounds = new Rect();
private final Date mDate = new Date();


private void measureText(final Paint p){
    final String dummy =  DateFormat.getDateTimeInstance().format(mDate);
    p.getTextBounds(dummy, 0, dummy.length(), mBounds);
    final int inset = (int) (mBounds.width()*0.1f); //add safety margin
    mBounds.inset(-inset, 0);
}

次に、次のように描画します。

mDate.setTime(System.currentTimeMillis());
String data_azi = DateFormat.getDateTimeInstance().format(mDate); 
cnv.drawText(data_azi, width - mBounds.width(), mBounds.height(),p);

また、ペイントオブジェクトが左揃えであることを確認してくださいp.setTextAlign(Align.LEFT);

于 2012-04-25T08:07:00.287 に答える