Flex4では、内部コンテンツがコンテナサイズを超えても自動的にスクロールバーを表示してくれない。

普通にs:Scrollerクラスを使用してもいいんだけど、s:Scroller内に含められない属性やらもあるのでスキンをいじってやる。

デフォルトのスキンの場所
\Program Files\Adobe\Adobe Flash Builder 4\sdks\4.0.0\frameworks\projects\spark\src\spark\skins\spark

なんでこんなに深いのかと。
ここに例えばPanelのスキンだとPanelSkin.mxmlというのがある。

この中で実際に内部コンテンツが置かれるところがここ。
<s:Group id="contentGroup" width="100%" height="100%" minWidth="0" minHeight="0">
</s:Group>
thisを表示するとほにゃららcontentGroupと表示されると思う。
addElementするとここに追加される。Flex4の表示リストになるのかな。

で、これをs:Scrollerで囲ってやる。
<s:Scroller>
<s:Group id="contentGroup" width="100%" height="100%" minWidth="0" minHeight="0">
</s:Group>
</s:Scroller>

これでPanelサイズを超えると自動的にスクロールバーが出てくる。

もちろん標準のを上書きするといけないので、プロジェクトのsrc以下にskinsというフォルダーを作ってそこに保存。
コンテナのプロパティskinClassに"skins.PanelSkinScroll"という感じで適用するスキンファイルを設定。
これでおk。

ApplicationSkinで試してみたけど、なぜかスクロールバーは表示されなかった。
なんでだろう?


Flash Builder 4 and Flex 4 Bible/David Gassner

¥4,653
Amazon.co.jp