0
我正在爲列表創建自定義項目渲染器,以便可以使用多個StyleTextField來創建多列數據。Flex 4.5 Mobile - 在自定義項目渲染器中設置StyleableTextField的寬度
我正在處理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";
正如你可以看到我正在嘗試設置基礎上,它的寬度寬的集裝箱(如下圖所示)。
我也嘗試設置percentWidth和顯式寬度,但列仍然有不同的寬度。
我的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列效果更好,但仍不會在所有行上保持單一寬度。
UPDATE:
試圖亞歷克斯曾建議我現在有以下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;
}
我添加了一個編輯我原來的職位,顯示我是如何實現你的建議的功能,但它沒有視覺衝擊力。軌跡顯示了它應該使用的寬度,但它們是正確的,但屏幕沒有反映出來。 – Rjs37
經過一些更多的實驗(在我的文本框中添加一些邊框)之後,我發現寬度實際上正在改變,但是我的hgroup中的項目不會自動重新定位,即使我已經嘗試將autoLayout設置爲true。 – Rjs37