2008年02月29日
Flash | TextFieldの最小限の高さ
TextLineMetrics - Adobe Flex 3リファレンスガイド
TextFieldのheightプロパティを、そのフィールドに含まれるテキストに合わせた最小限のものにしたくて次のようなコードを書いていた。
var textField:Text = new TextField(); textField.wordwrap = true; textField.text = '長いテキストと仮定します。'; textField.height = textField.textHeight;しかし、これだと複数行になる場合に何故か最終行が表示されず困ったことになる。なので、上のコードの最後を
textField.height = textField.textHeight + 5;と、その時の気分に合わせて適当に高さを加えていた。
上記のTextLineMetricsクラスのドキュメントに掲載されている図を見て、このナゾが理解できた。
TextFieldの中のテキストとTextFieldの枠(heightの対象になるもの)の間に上下それぞれ2pxずつのガターがあったのだ。なので、最終行までちゃんと表示させるにはTextFieldの高さはtextHeightの値に少なくとも4pxを加える必要がある。つまり、TextFieldの高さを最小限にするためには次のようなコードになる。
var gutter:int = 2; textField.height = textField.textHeight + gutter * 2;
幅に関しても同じ。すっきりした。
Comment