【问题标题】:Flex : Multy row TabBar?Flex:多行 TabBar?
【发布时间】:2012-03-31 21:52:52
【问题描述】:
  • 是否有可能,以及如何(如果有)根据容器的宽度拥有一个多行 TabBar?

【问题讨论】:

  • 我不确定具体该怎么做,但是扩展 TabBar 是一个很好的开始方式。你见过这个 [链接]blog.everythingflex.com/2009/08/27/… 吗?尽管完整的源代码链接已损坏,但也许这会对您有所帮助。我也知道这不是你要求的,但如果你不喜欢普通的 TabBar,来自 [link]code.google.com/p/flexlib/wiki/ComponentList 的 SuperTabBar 有点好:)
  • 我猜您可以将 TileLayout 应用于自定义 TabBarSkin 而不是 Horizo​​ntalLayout。这样你甚至不必扩展 TabBar
  • 我已经添加了 TileLayout 但有一些奇怪的间隙一直留在选项卡下方。 :|
  • 我在 Flex 2 天内重新构建了一个;但我们决定不发布它,因为它违背了我们帮助人们创建直观用户界面的“目标”。我认为我们的组件将多个标签栏串在一起。
  • @YordanYanakiev 您是否尝试将布局的“horizo​​ntalGap”和“verticalGap”设置为“0”或什至“-1”?

标签: actionscript-3 apache-flex air flex4.5


【解决方案1】:

就像给你的 TabBar 一个 TileLayout 一样简单。您不必为 TabBar 子类化,甚至不必为它创建自定义皮肤类。只需这样做:

<s:TabBar dataProvider="{dp}" left="0" right="0">
    <s:layout>
        <s:TileLayout horizontalGap="-1" verticalGap="-1" 
                      requestedRowCount="2" />
    </s:layout>
</s:TabBar>

这会产生这样的结果:

你看到的 TabBar 下方的空隙,是因为 TileLayout 默认会分配一定数量的行。您可以通过将 requestedRowCount 设置为您期望的行数(本例中为 2)来覆盖它。

如果您希望它真正动态化,您可以通过将 TabBar 的总 width 与 TileLayout 的 columnWidth 进行比较来计算所需的行数,并将结果数绑定到 requestedRowCount 属性。

【讨论】:

  • 它确实有效,但在 TabBar 对象之后仍然出现了一个扭曲的间隙。 :| layout> 这是在 里面,如果它有帮助的话。 Flex 4.6。
  • @YordanYanakiev 我已经更新了我的答案并修复了该问题。
  • height="{(int(dataProvidersTabs.length/(width/90))+1)*21}" 这是另一个修复,但也许有很多漂亮的解决方案。
  • 关于 requestedRowCount - 这实际上完成了工作!非常感谢RIAstar :)
猜你喜欢
  • 2011-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 2012-05-21
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多