Adobe AIR StyleableTextFieldの書式

直接StyleableTextFieldオブジェクトを作成して画面に表示しようとして色々とあがく。

まず、MXMLでの画面にどうやって当てはめるかという点では「LabelオブジェクトにaddChildしてしまう」方法で解決した。画面のイニシャライズ時にやってしまう。

StyleableTextFieldとLabelのサイズが一致しないのでサイズを指定するが、イニシャライズ時には画面自体も含めてサイズが決定していない為、creationCompleteでサイズを指定する。本来おかしいと思うが、イベントのタイミングの資料がないのでどのタイミングが正しいか不明。

この時点で、一応画面に表示されるようになった。但し、StyleableTextFieldは透明なので、Labelオブジェクト自体にも文字を表示させると両方画面に見えてしまう(笑)


StyleableTextFieldはLabelに指定されいる文字サイズを無視してデフォルトの文字サイズで表示されているので、これを訂正しようとするが、マニュアルに書いてある「setStyle」や「StyleName」といったStyleableTextFieldのメソッドを使っても全く何も変わらない。あるいは、htmltextプロパティーの方を使用しているからかもしれないが。

資料とにらめっこした結果、htmltextプロパティーはTextFieldクラスのプロパティーであるので、TextFieldクラスのでスタイル変更方法を参照すると、setTextFormatを使用するということになっている。

StyleableTextFeildでもこのメソッドは継承されているのでそれを使用すると一応変更できた。ただし、よくよく考えるにsetTextFormatメソッドを使うのではなくdefaultTextFormatプロパティーを最初に設定するのが正しそうに見えるので、LabelにStyleableTextFieldを追加する前にLabelでの指定にあわせてdefaultTextFormatのサイズを変更することにした。一応動く。


…あれ?StyleableTextFieldの機能を一つも使っていない気がするが、何が追加されているんだ、このクラスは?

「モバイル版ではこの機能がない」という項目が多かったから、その辺なのか。

ちなみにTextFeildでいいならLabelにもあるのではないかと思ってマニュアルを見たが、LabelはTextBaseからの派生だった。そもそもパッケージが違う*1。同じ系統ならRichTextになりそうだが、それもモバイル版では使わないお約束のもののようだ。

*1:かたやspark、かたやflash.text