在一个设计为 100% 缩放到网络窗口的 Flex 项目中,我有一个 Spark 列表。我有一个简单的 itemrenderer,它获取数据并显示名称和消息。只需将其想象为一个简单的即时消息显示即可。问题是,对于我的 msg_txt
标签,我想给它一个宽度,即保存它的父列表的宽度。
我尝试关闭 HorizontalScrollPolicy,还尝试将 width="{this.parent.parent.width}"(以及 this.parent.width)用于项目渲染器内的 Spark 标签。
在标签中,我尝试了一些类似 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>
这是项目渲染器:
<?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 (creationComplete) 后,您是否尝试过以编程方式使用 percentWidth 和 percentHeight ?
或
我还没有尝试过下一步:
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" width="100%" height="100%">
关于flash - 如何在液体布局中为 Spark 列表设置 itemrenderer 内的标签宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6528124/