【问题标题】:Unset the explicit height value of a flex component?取消设置 flex 组件的显式高度值?
【发布时间】:2011-03-22 15:18:22
【问题描述】:

在声明容器组件时没有设置特定的高度值,容器的高度将自动设置为一个值,可以在不滚动的情况下显示其所有内容/子项(如果可能)。

在组件初始化为合适的高度后,我明确地改变了容器的高度值。

我的问题是,在我改变组件的高度后,是否可以切换回根据容器内容自动设置的原始高度?我正在寻找某种方法来取消设置组件高度的显式值。

【问题讨论】:

    标签: apache-flex flex4


    【解决方案1】:

    可能对您有用的一个技巧是将高度设置为“NaN”,这实际上会“取消设置”您之前设置的显式值。

    【讨论】:

    • 是的,这绝对是解决方案。
    • +1 我不知道将高度或宽度设置为NaN 会导致显示属性被重置。每天学习新东西。
    • 这正是我正在寻找的,它就像你在我的场景中所说的那样工作。谢谢!
    【解决方案2】:

    在手动更改之前不存储原始高度,我认为这是不可能的。

    您可以做的是扩展您用作容器的任何基础对象,以添加一个名为OriginalHeight 的新属性(也可以添加OriginalWidth)。

    然后,您将覆盖 set height 函数以在新的 OriginalHeight 属性更改之前将原始高度存储在它中。当您需要重新设置它时,您只需设置容器的height = OriginalHeight

    【讨论】:

    • 我认为您没有正确阅读问题。他希望画布回到“儿童尺寸”模式。这只会用另一种显式大小替换一个。
    • @J_A_X,我正确地阅读了这个问题,但对他想要从中实现的目标有不同的理解。我曾以为他想“切换回”到先前计算的值,而不是让容器重新测量其所有子项以再次设置高度。我仍然坚持我的答案,但承认这可能不是他的问题的唯一可接受的答案。
    • J_A_X 关于我想做的事情是正确的。无论如何,谢谢你的回答和你帮助我的尝试。
    【解决方案3】:

    容器的高度为 自动设置一个值

    这不是完全自动的。组件将始终设置子项的高度和宽度;但它永远无法设置自身的高度和宽度。它只能提出建议(通过设置measuredHeight和measuredWidth属性使用measure方法)。是否要使用或忽略这些测量高度/测量宽度值取决于父容器。

    Flex 框架容器都编写了用于计算高度/宽度/定位的代码。如果您正在使用这些,它可能看起来是自动的;但它实际上是一个相当手动的过程。您只是在使用其他人编写的代码。

    如果你显式地改变容器的高度值,你是怎么做的?在容器内(this.height = newvalue)?或者父母是否以某种方式改变了高度(myContainer.height=newValue)?

    除此之外,这取决于原始高度值是多少。您可以使用measuredHeight 值,但我不会指望它。但是,如果您指定绝对高度和绝对宽度,则永远不会运行测量。

    Jason 关于存储旧值的答案可能是最好的。

    【讨论】:

      猜你喜欢
      • 2015-03-21
      • 2018-04-08
      • 2011-02-04
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 2011-09-17
      相关资源
      最近更新 更多