Flex 4.5 Mobile - 在自定义项呈示器中设置StyleableTextField的宽度

时间:2012-10-12 14:00:42

标签: flex4 flash-builder flex4.5 itemrenderer

我正在为列表创建自定义项呈示器,以便使用多个StyleTextField可以拥有多列数据。

我正在研究MXML和Actionscript的混合(因为StyleableTextField只能通过Actionscript创建)。

但是我在排列宽度方面遇到了问题。我用来设置宽度的Actionscript如下:

var id:StyleableTextField = StyleableTextField(createInFontContext(StyleableTextField));                
id.width = (itemContainer.width * 30/100);
id.htmlText = "Text Here";

var desc:StyleableTextField = StyleableTextField(createInFontContext(StyleableTextField));              
desc.width = (itemContainer.width * 70/100);
desc.htmlText = "Much longer text description goes here";

正如您所看到的,我正在尝试根据容器的宽度设置宽度(如下所示)。

我也尝试过设置百分比宽度和显式宽度,但是列似乎仍然有不同的宽度。

我的MXML看起来像这样:

<s:Group width="100%">
    <s:HGroup id="itemContainer" verticalAlign="middle" paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10" width="100%" gap="10">
    </s:HGroup>
</s:Group>

特别是id列似乎不愿意比它的预设宽度更大。可以是多行的desc列效果更好,但仍然不会在所有行中保持一个宽度。

更新

尝试Alex建议我现在有以下ActionScript代码。虽然它似乎没有做太多。

override protected function updateDisplayList(unscaledWidth : Number, unscaledHeight : Number) : void {
if (idno == null)
{
idno = createDisplay(data.idno);
}
super.updateDisplayList(unscaledWidth, unscaledHeight);
idno.width = (unscaledWidth * 30/100);
desc.width = (unscaledWidth * 70/100);
trace (idno.width);
trace (desc.width);
}

protected function createDisplay(value:String):StyleableTextField
{
var field:StyleableTextField = StyleableTextField(createInFontContext(StyleableTextField));
field.text = value;
itemContainer.addElement(field);
return field;
}

1 个答案:

答案 0 :(得分:0)

你试过了吗?

override protected function updateDisplayList(unscaledWidth : Number, unscaledHeight : Number) : void {
    super.updateDisplayList(unscaledWidth, unscaledHeight);
    id.width = (unscaledWidth * 30/100);
    desc.width = (unscaledWidth * 70/100);
}