0

私はそのような問題を抱えています:私はコンテナを作成していて、それは実行時にコンテンツです。大まかな構造は次のとおりです。

--VBox

- - 形

------- FormItem

..。

------- FormItem

---- ControlBar

コンテナのmaxHeightsを修正してform、画面の境界内に保持します。しかし、垂直スクロールバーを取得すると、水平方向も表示されます(このVScrollBarには十分な場所ではないようです)。

この問題を回避するために、水平スクロールが表示されるリスナーを作成しました。表示された場合は、コンテナーを少し増やして、他のスクロールバーを通常どおりに表示します。

form.addEventListener(Event.ADDED, function(event:Event):void{
if(event.target is HScrollBar){
    while(form.horizontalScrollBar && form.horizontalScrollBar.visible && !(form.width > form.maxWidth)){
        form.width += 10;
        form.validateDisplayList();
    }
}
});

私もvalidateNow他の同様の方法を試しました。私がここに持っているもの:1。HScrollBarが追加されています。2.コンテナの幅を少し大きくして、消えます。3.それが消えると、検証は存在しないスクロールバーを測定しようとしたときにnullポインター例外をスローします。検証前に追加しようとしましvalidatePropertiesたが、どちらも機能しませんでした。

誰かがこの厄介な巻物を取り除くのを手伝うことができますか?:)

4

1 に答える 1

0

問題は、scrollPolicyがautoFlexに設定されている場合、レイアウトの計算時にスクロールの寸法が考慮されないことです。したがって、スクロールが表示されると、すでに存在しているコンテンツの上にスクロールが表示されます。また、コンテンツがスクロールによって非表示になると、水平スクロールが表示されるため、スクロールを介してすべてのコンテンツにアクセスできます。私が通常扱う方法は、スタイルプロパティを常に20(スクロールの通常の幅は16)に設定することですpaddingRight(またはright親がCanvasの場合)。これにより、スクロールが表示されたときに何も重ならないようになります。

于 2010-09-03T09:54:13.823 に答える