1

flex4 を使用して、アイテム レンダラーを含むリストを作成しました。

<mx:List id="queueView" dataProvider="{presenter.queue.items}">
  <mx:itemRenderer>
    <fx:Component>
      <mx:VBox>
        <mx:Label text="{data.name}"/>
        <mx:Label text="{data.artist.name}"/>
      </mx:VBox>
    </fx:Component>
  </mx:itemRenderer>
</mx:List>

リストに交互の色があります:

#queueView
{
  alternating-item-colors: red, yellow;
}

ただし、リスト項目は常に白い背景でレンダリングされます (レンダラーを削除すると、色が正しくレンダリングされます)。

itemRenderer に contentBackgroundColor="red" を設定すると、すべてのアイテムが赤になります。コンパイラは透過を受け入れません。

itemRenderer がリストの交互の色を尊重するようにするにはどうすればよいですか?

4

1 に答える 1

1

これは私にとってはうまくいくようです。これが私のコードです:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768" xmlns:components="components.*">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;

            [Bindable]
            public var items:ArrayCollection = new ArrayCollection([{name:"foo",value:"bar"},
                                                                    {name:"foo",value:"bar"},
                                                                    {name:"foo",value:"bar"},
                                                                    {name:"foo",value:"bar"},
                                                                    {name:"foo",value:"bar"},
                                                                    {name:"foo",value:"bar"},
                                                                    {name:"foo",value:"bar"},
                                                                    {name:"foo",value:"bar"}]);

        ]]>
    </fx:Script>


    <fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        @namespace mx "library://ns.adobe.com/flex/halo";
        @namespace components "components.*";

        #queueView
        {
            alternating-item-colors: red, yellow;   
        }
    </fx:Style>

    <mx:List id="queueView" dataProvider="{items}" width="200">
        <mx:itemRenderer>
            <fx:Component>
                <mx:VBox>
                    <mx:Label text="{data.name}"/>
                    <mx:Label text="{data.value}"/>
                </mx:VBox>
            </fx:Component>
        </mx:itemRenderer>
    </mx:List>    
</s:Application>

そしてここに結果があります:

結果

どのビルドを実行していますか?過去数週間にリリースされた最新のベータ版を実行しています。正確には4.0.0.253292をビルドします。まだアップグレードしていない場合は、最新のビルドにアップグレードしてみてください。また、プロジェクトをクリーンアップしてみることもできます。また、ブラウザがswfをキャッシュしていないことを確認してください。これは、ファイルサイズが大幅に変更されていない場合に発生することがあります。

私が何かを逃したかどうか私に知らせてください。しかし、あなたのコードはうまく機能しているようです。

于 2009-10-15T23:37:59.377 に答える