読者です 読者をやめる 読者になる 読者になる

うさがにっき

読書感想文とプログラムのこと書いてきます

javaからTextViewの文字サイズを変更する場合の注意点

Android

概要

setTextSize()はpxではなく、spを受け取る

詳細

ハマったのでメモ

javaからサイズを指定する際には基本pxだと思っていたので、dpをpx変換するように以下の様なコードを書いていた

// textViewの大きさ指定
LayoutParams titleParam = new LayoutParams(LayoutParams.MATCH_PARENT, (int)DisplayUtil.dpToPx(getActivity(), 36));
textView.setLayoutParams(titleParam);

// textViewの文字サイズ指定
textView.setTextSize((int)DisplayUtil.dpToPx(getActivity(), 16))

すると文字が想定より大きく表示されてしまっていた

色々調べると
http://developer.android.com/reference/android/widget/TextView.html#setTextScaleX(float)
"scaled Pixel"ってspのことだったと気づいたので以下のように修正

// textViewの大きさ指定
LayoutParams titleParam = new LayoutParams(LayoutParams.MATCH_PARENT, (int)DisplayUtil.dpToPx(getActivity(), 36));
textView.setLayoutParams(titleParam);

// textViewの文字サイズ指定
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);

つまり
javaからサイズを指定するには基本pixelだけどtextsizeだけは単位を指定しないとspになる」
ということだったらしい