【发布时间】:2011-03-22 15:18:22
【问题描述】:
在声明容器组件时没有设置特定的高度值,容器的高度将自动设置为一个值,可以在不滚动的情况下显示其所有内容/子项(如果可能)。
在组件初始化为合适的高度后,我明确地改变了容器的高度值。
我的问题是,在我改变组件的高度后,是否可以切换回根据容器内容自动设置的原始高度?我正在寻找某种方法来取消设置组件高度的显式值。
【问题讨论】:
标签: apache-flex flex4
在声明容器组件时没有设置特定的高度值,容器的高度将自动设置为一个值,可以在不滚动的情况下显示其所有内容/子项(如果可能)。
在组件初始化为合适的高度后,我明确地改变了容器的高度值。
我的问题是,在我改变组件的高度后,是否可以切换回根据容器内容自动设置的原始高度?我正在寻找某种方法来取消设置组件高度的显式值。
【问题讨论】:
标签: apache-flex flex4
可能对您有用的一个技巧是将高度设置为“NaN”,这实际上会“取消设置”您之前设置的显式值。
【讨论】:
NaN 会导致显示属性被重置。每天学习新东西。
在手动更改之前不存储原始高度,我认为这是不可能的。
您可以做的是扩展您用作容器的任何基础对象,以添加一个名为OriginalHeight 的新属性(也可以添加OriginalWidth)。
然后,您将覆盖 set height 函数以在新的 OriginalHeight 属性更改之前将原始高度存储在它中。当您需要重新设置它时,您只需设置容器的height = OriginalHeight。
【讨论】:
容器的高度为 自动设置一个值
这不是完全自动的。组件将始终设置子项的高度和宽度;但它永远无法设置自身的高度和宽度。它只能提出建议(通过设置measuredHeight和measuredWidth属性使用measure方法)。是否要使用或忽略这些测量高度/测量宽度值取决于父容器。
Flex 框架容器都编写了用于计算高度/宽度/定位的代码。如果您正在使用这些,它可能看起来是自动的;但它实际上是一个相当手动的过程。您只是在使用其他人编写的代码。
如果你显式地改变容器的高度值,你是怎么做的?在容器内(this.height = newvalue)?或者父母是否以某种方式改变了高度(myContainer.height=newValue)?
除此之外,这取决于原始高度值是多少。您可以使用measuredHeight 值,但我不会指望它。但是,如果您指定绝对高度和绝对宽度,则永远不会运行测量。
Jason 关于存储旧值的答案可能是最好的。
【讨论】: