2011-11-28 59 views
0

過去幾天我一直在爲渲染器渲染移動應用程序。我正在創建一個網格式渲染器,其中有一列移動應用程序的重量較輕的列。這是一個窮人的數據網格。佈局很好。我擁有的問題是控制列表中每一行的高度。Flex DataGroup設置項目渲染器的高度

當測量()被調用時,我measuredHeight可以設置爲:

measuredHeight = getElementPreferredHeight(ld) + verticalPadding; 

其中垂直填充是:

var verticalPadding:Number = getStyle("paddingTop") + getStyle("paddingBottom"); 

當調試在桌面上,measuredHeight可以是設置爲12和在設備上(摩托羅拉Atrix),它被設置爲12.

但是當調用layoutContents時,unscaledHeight是一個比我的measuredHeight值大很多的數字(設備上44,runn時66在桌面上),導致圍繞每個項目的垂直空白比我所關心的要多。

我敢肯定我錯過了一些東西,但我該如何控制行高?我碰巧在這個特定的例子中使用了一個Datagroup,但是在一些玩耍中,我只使用了一個簡單的列表,我遇到了同樣的問題。系統的某個位置正在覆蓋我的measuredHeight和其他值。

任何想法?

Randy

回答

1

您的代碼段是渲染器的一部分還是DataGroup的一部分?或者別的地方?

在Flex中,父母總是負責調整孩子的大小。對於渲染器,DataGroup是父級,渲染器實例是子級。因此,無論您在itemRenderer中指定了什麼尺寸,都可能不會使用它。 measuredHeight和measuredWidth只是父容器可以根據其實現情況選擇忽略的建議。您可以使用typicalItem來幫助計算默認的行大小。

您還可以創建一個自定義佈局類來調整和定位您的孩子。

使用VerticalLayout時,除非將variableRowHeight設置爲true,否則寬度是固定的。 More Info in the docs。您還可以在佈局類上設置rowHeight屬性以指定所有行的高度。