私が持っているflexプロジェクトでは、Webウィンドウに100%スケールするように設計されています。私は火花リストを持っています。そして、私はデータを受け取り、名前とメッセージを表示するシンプルなitemrendererを持っています。シンプルなインスタントメッセンジャーのようなものだと思います。問題は、私のmsg_txt
ラベルでは、それを保持している親リストの幅と同じ幅にしたいということです。液体レイアウトでスパークリストのitemrenderer内にラベル幅を設定するにはどうすればいいですか?
horizontalScrollPolicyをオフにしてみましたが、アイテムレンダラー内のスパークラベルの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>
それでした!ありがとう! (ItemRenderer宣言にwidth = "100%" height = "100%"を入れて) – brybam
これがなぜ機能するのか分かりません。子どものサイズを決めるには、常に親の責任になります。この場合、リストはレンダラーのサイズを決定します。 itemRenderersは常にListクラスの幅の100%になるようにサイズが設定されていると思いました。 (マイナススクロールバー、パディング、および他の同様の値) – JeffryHouser