1

質問は些細に聞こえvirtualLayoutますが、false に設定されているだけですが、それは私が求めているものではありません。

私は次の状況を持っています。私の Flex モバイル アプリには事前定義されたコンテナーがあり、通常はアプリケーションの全幅の半分の幅です。ユーザーはこれらのコンポーネントを最大化して、使用可能な幅をすべて占有することができます。

当然、Listまたはでデータを表示するコンポーネントの場合DataGroup、レンダラーはサイズを変更する必要があります。これはそのまま使用できますが、コンポーネントが最大化されたときに追加情報を表示する必要があります。これを機能させるために、レンダラーを更新するための非常に単純な方法を作成しました。

private function updateRenderer():void {
            _itemRenderer.properties = {isFullScreen: _isFullScreen, headerProperties:_headerProperties, visibleColumns:_visibleColumns, optimalColWidth:_optimalColWidth, grid:this.name, fids:_fids};
            _list.itemRenderer = _itemRenderer;
}

それに応じて、visibleColumns などのレンダラー プロパティが変更されます。レンダラーはサイズ変更中に自動的に無効になるため、新しいプロパティで再描画できます。

これで問題ありませんが、残念ながら、新しいレンダラーは既存のものを単に再利用して再描画させるのではなく、この種の手順で作成されます。

この動作を変更する方法はありますか、またはこのようなタスクを達成するためのより良い方法を誰かが知っていますか?

4

1 に答える 1

0

表示されているコードを理解すると、itemRendererプロパティが置き換えられます。そのため、これが発生すると、既存のすべてのレンダラーが破棄され(「古い」レンダラーで作成されたため)、「新しい」レンダラーのインスタンスに置き換えられます。

レンダラーでプロパティを直接変更することを検討してください。

   (_list.itemRenderer as ClassFactory).properties = {isFullScreen: _isFullScreen, headerProperties:_headerProperties, visibleColumns:_visibleColumns, optimalColWidth:_optimalColWidth, grid:this.name, fids:_fids};

次に、必要に応じて、すべてのitemRendererが再描画されるように、dataProviderを強制的に更新します。

(_list.dataProvider as ArrayCollection).refresh()
于 2012-08-29T12:52:47.960 に答える