Flex组件宽度

时间:2011-08-04 23:03:50

标签: flex list components width

我使用以下代码为Spark List组件创建了一个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"
                xmlns:mx="library://ns.adobe.com/flex/mx"
                autoDrawBackground="true">

    <s:RichText left="10" top="10" bottom="10" paddingBottom="0" paddingLeft="0"
                paddingRight="0" paddingTop="0" text="{data[1].toString()}" textAlign="left"
                verticalAlign="middle" width="{parentDocument.width*0.96}"/>

</s:ItemRenderer>

问题是当传递的数据太多时,List控制器会显示滚动条。添加right="10"不起作用。我需要一种方法,以便任何大小都不存在滚动条(这是一个AIR应用程序)。

5 个答案:

答案 0 :(得分:0)

列表组件由滚动条本身组成。您可以使用 DataGroup (相同的输入参数,例如 itemRenderer =“” dataProvider =“”列表) ,并记住设置参数 clipAndEnableScrolling =“true”

这种方式也引入了新的潜在问题。当您有大量数据时,无法自动向上和向下滚动。但是,您可以手动监听mouseEvent,也可以在应用程序的任何位置添加自定义ScrollBar(设置viewport =“yourDataGroup”)。

答案 1 :(得分:0)

说到RichText(和itemrenderer中的滚动条),在RichText中设置minHeight="0"minWidth="0"可能会解决问题 - 文本将被删除。列表中的variableRowHeight="true"会使itemRenderers成为他们自己的计算大小。

如果您希望List始终显示其所有项目,请尝试将rowCount绑定到dataProvider长度,例如rowCount="{Math.max(arrayOfDataToDisplay.length, 5)}"

答案 2 :(得分:0)

根据对op的评论,您似乎对如何布置项目渲染器有疑问。

  1. 将项呈示器的percentWidth设置为100(或width=100%}
  2. 将RichText的percentWidth设置为100(同样,您可以使用width=100%
  3. 删除lefttopbottom约束。
  4. 这两个步骤应该摆脱你的水平滚动条问题。如果继续,您可以尝试核选项并在horizontalScrollPolicy=off上设置List

答案 3 :(得分:0)

此外,您应该考虑设置渲染器的maxWidth属性,以防止它变得比列表大。

答案 4 :(得分:0)

此代码完成了这项工作。

        protected function ItemRenderer_Init(event:FlexEvent):void {
            setInterval(ResizeRenderer, 50);
        }

        private function ResizeRenderer():void {
            richtext.width = parentApplication.width-535;
        }