2011/12/16

TextViewに適切なサイズを指定する

JavaからTextViewを生成するとき。。。テキストサイズ、なんかおかしくね?、って思ったことありませんか?
特にXMLリソースでDimensionを設定しこれをJavaで取得してTextViewに適応するとき「フォントサイズでかくね?」って思うことありませんか?


TextView#setTextSize(float)がやっていることって実は 内部でSPをちゃんとかけてます。まぁ、ちゃんとJavaDoc読めば

This size is adjusted based on the current density and user font size preference.

って書いてあるんですけどね。。。
ちなみにsetTextSize(int, float)で利用されているTypedValue#applyDimensionは
らしいので、純粋にXMLで設定したDimensionをJavaから設定するには こんな感じで指定すればいいらしい。

ただしsetTextSize(int, float)が利用できない場合は きれいじゃ無いけどしょうが無いよねっ!


ちなみにdpとspの違いは、dpは画面解像度に対してのみで決定されるのに対し、spは更にユーザーが設定に応じて倍率が変更されるらしいです。
IS05にはその倍率設定画面が見当たらないけど。。。