mx:设置为auto时,列表水平滚动始终可见

时间:2013-01-04 02:09:06

标签: flex4 horizontal-scrolling

我的mx:list即使策略设置为Auto,ALWAYS也会显示滚动条。如何让它真正成为自动并在不需要时消失? 这是代码:

<fx:Script>
  <![CDATA[
    private function initFoo():void 
    {
      foo.maxHorizontalScrollPosition=foo.columnWidth;
    }
  ]]>
</fx:Script>

<s:VGroup width="100%">
  <mx:List id="foo" width="100%" horizontalScrollPolicy="{ScrollPolicy.AUTO}" creationComplete="initFoo()" >
    <mx:dataProvider>
      <fx:String>text</fx:String>               
    </mx:dataProvider>
  </mx:List>
</s:VGroup>

1 个答案:

答案 0 :(得分:0)

您的问题似乎是因为您正在设置maxHorizontalScrollPosition。如果你不这样做,列表的行为就像你期望的那样(除非实际需要,否则没有滚动条)。

您还使用了列表的columnWidth属性,但docs表示仅使用旧的<mx:TileList /><mx:HorizontalList />组件 - 使用时没有意义它带有<mx:List /> columnWidth的默认值为50,这就是您看到滚动条的原因。

如果将列表中的columnWidth设置为500,则滚动条会消失。但同样,我建议不要使用maxHorizontalScrollPositioncolumnWidth

坦率地说,我不确定maxHorizontalScrollPosition的设定目的是什么。如果有滚动条,你不想让用户滚动到任何结尾吗?我之前从未使用过这个属性,我想的越多,Flex SDK开发人员甚至创建了这样一个属性似乎有点多余 - 再次,为什么有滚动条但不允许用户滚动到结束?我确定有一些原因:)

最后,您可能最好使用<s:List />而不是<mx:List /> - 您正在使用<s:VGroup />中已有的Spark组件,因此没有理由使用MX列表。如果您使用Spark列表,您的代码会略有变化(其中一些属性不再相关),但您应该能够获得与之相同的结果。