2011-06-29 12 views
2

私が持っているflexプロジェクトでは、Webウィンドウに100%スケールするように設計されています。私は火花リストを持っています。そして、私はデータを受け取り、名前とメッセージを表示するシンプルなitemrendererを持っています。シンプルなインスタントメッセンジャーのようなものだと思います。問題は、私のmsg_txtラベルでは、それを保持している親リストの幅と同じ幅にしたいということです。液体レイアウトでスパークリストのitemrenderer内にラベル幅を設定するにはどうすればいいですか?

horizo​​ntalScrollPolicyをオフにしてみましたが、アイテムレンダラー内のスパークラベルのwidth = "{this.parent.parent.width}"(this.parent.widthも同様)を試しました。

ラベルでは、left = "0" right = "0" maxWidth = "{this.width}"のようないくつかのことを試しましたが、本当にトリックはありません。

このラベルには、リストの最大幅が表示されます。ブラウザのサイズが変更され、リストのサイズが変更された場合、サイズが変更されていることを確認してください。

相続人のリスト:

<s:List id="chat_content" width="100%" height="100%" 
       alternatingItemColors="[#EEEEEE,#E6E6E6]" contentBackgroundColor="#EEEEEE" 
       horizontalScrollPolicy="off" itemRenderer="renderers.ActiveChatItemRenderer"> 
     </s:List> 

相続人のitemRenderer:itemRendererにの子に

<?xml version="1.0" encoding="utf-8"?> 
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark"> 

    <fx:Script> 
     <![CDATA[ 
      import mx.core.FlexGlobals; 
      import mx.events.FlexEvent; 

      import spark.components.List; 

      override public function set data(value:Object):void { 
       super.data = value; 
       if (data == null) 
        return; 

       if(data.systemMsg) 
       { 

       } 
       if(data.name) 
       { 
        name_label.text=data.name; 
       } 
       if(data.icon) 
       { 

       } 
       if(data.msg) 
       { 
        msg_txt.text=data.msg; 
       } 




      } 





     ]]> 
    </fx:Script> 

    <s:states> 
     <s:State name="normal" /> 
     <s:State name="hovered" /> 
     <s:State name="selected" /> 
    </s:states> 

    <s:HGroup id="container" horizontalAlign="left" verticalAlign="top" paddingTop="10" paddingBottom="10"> 
     <s:VGroup horizontalAlign="center" verticalAlign="middle" 
        width="100"> 
      <s:Label id="name_label" fontWeight="bold" text="Name: " 
        fontSize="18"/> 
     </s:VGroup> 
     <s:Label id="msg_txt" text="msg text here" width="{this.parent.parent.width}"/> 


    </s:HGroup> 

</s:ItemRenderer> 

答えて

3

あなたは(にcreationComplete)のitemRendererが作成されたプログラムによって一度percentWidthに、percentHeightてみましたのか?

または

私は次の試していない:

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" width="100%" height="100%"> 
+0

それでした!ありがとう! (ItemRenderer宣言にwidth = "100%" height = "100%"を入れて) – brybam

+0

これがなぜ機能するのか分かりません。子どものサイズを決めるには、常に親の責任になります。この場合、リストはレンダラーのサイズを決定します。 itemRenderersは常にListクラスの幅の100%になるようにサイズが設定されていると思いました。 (マイナススクロールバー、パディング、および他の同様の値) – JeffryHouser

0

設定パーセント幅プロパティ:

<s:HGroup id="container" horizontalAlign="left" verticalAlign="top" paddingTop="10" paddingBottom="10" width="100%"> 
    <s:VGroup horizontalAlign="center" verticalAlign="middle" 
       width="100"> 
     <s:Label id="name_label" fontWeight="bold" text="Name: " 
       fontSize="18" width="100%"/> 
    </s:VGroup> 
    <s:Label id="msg_txt" text="msg text here" width="{this.parent.parent.width}" width="100%"/> 
</s:HGroup> 

私は何のレイアウトは不明だあなた」もう一度行く。コードには2つのラベルしかないので、なぜ2つのグループが必要ですか?私は余分なグループを使用せずに、あなたに似たレイアウトを与える疑い

<s:Label id="name_label" fontWeight="bold" text="Name: " fontSize="18" width="100" x="0" y="0"/> 
<s:Label id="msg_txt" text="msg text here" width="{this.parent.parent.width}" width="100%" x="{name_label.x + name_label.width}" y="0"/> 

:あなたが並んで二つの項目の側を表示したい場合は、このようなものを使用することができます。

+0

私はいくつかの異なるレイアウトで遊んでいたので、私は2つのグループを使用している理由です。とにかく、私はラベルの幅とHgroupの幅を100%に設定しました。あなたはそれがうまくいくと思うでしょうが、そうではありません。ラベルはまだリストコンポーネントの幅を超えて実行され、決して破損しません。私は試して、テキストエリア/入力を使用しますが、テキストエリアは、ラベルのように入力されたテキストに応じてサイズを変更しません。 – brybam

関連する問題