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 回答