Unknown Region

プログラムでハマったエラーとその解決方法についての備忘録メモ

【Android】TextView.getTextSize()の落とし穴

AndroidのTextViewでsetTextSize(size)をした後にgetTextView()を実行すると値が違うという罠にハマる。

どういうことかというと、以下のコードで説明すると……。 

例: (Java)

TextView textView = new TextView(context);
textView.setTextSize(14.0f); // 14.0fを設定する
Log.d(TAG, Float.toString(textView.getTextSize())); // 36.75が取得される

setTextSize(size)はSPで値を設定するのに対して、textView.getTextSize()はピクセルで値を返却するというオチ。

すごく分かりにくいよ...orz

SPのまま取得したければ、ピクセルの値とSPの値の変換処理を書けばOK!

setTextSize(unit, size)を使えば設定も取得もピクセル値で統一できますが、端末依存の影響をモロにウケるので全くオススメしません。