FontMetrics
Android をいろいろ勉強中...。
今日は文字列を中央に配置するというのをやった。
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setTextAlign(Paint.Align.CENTER); paint.setTextSize(36f); FontMetrics fm = paint.getFontMetrics(); float center = -1*(fm.ascent+fm.descent)/2; paint.setColor(Color.RED); String text = "Hello,World!"; canvas.drawText(text,getWidth()/2,getHeight()/2+center,paint);
「Paint.ANTI_ALIAS_FLAG」はアンチエイリアスを有効にする。
「(fm.ascent+fm.descent) / 2 」は文字の高さの中央を求める。
文字の描画の基準は一番下(正確には、baseLine)になるので、
描画位置を getHeight()/2 にすると
キャンパスの真ん中が文字の一番下にあたる。
そのため、getHeight()/2 に 文字の中央にあたる center 分、下へ移動する。
すると、文字がキャンパスの中央に配置される。
ref:
テキストの描画(FontMetrics) - Android Wiki*