【问题标题】:Auto-sizing and positioning in FlexFlex 中的自动调整大小和定位
【发布时间】:2010-01-04 15:38:16
【问题描述】:

我正在开发一个使用 XML 模板动态创建 DisplayObjects 的 flex 应用程序。这些模板定义了可用于应用程序中每个内容页面的不同布局(即,2 列、3 列等)。管理员可以从中进行选择,并在每个区域中填充其内容。

模板添加了 3 种 DisplayObject 类型之一 - HBox、VBox 或第三个组件 - LibraryContentContainer(定义为应用程序一部分的 mxml 组件) - 它实际上是一个内部带有 TextArea 的画布元素。

我遇到的问题是我需要每个区域自动调整大小以适应内容的长度,但似乎无法找到有效的方法来做到这一点。

在 LibraryContentContainer 中,当设置 TextArea 的值时,我在 LibraryContentContainer 上调用 .validateNow()。然后我在 TextArea 和 LibraryContentContainer 上设置 height 属性以匹配 TextArea 的 textHeight 属性。

在以下示例中,this 是 LibraryContentContainer,viewer 是 TextArea,TextArea 的 value 属性绑定到 this.__Value。 v 是包含文本区域内容的变量

this.__Value = v;
this.validateNow();

this.viewer.height = this.viewer.textHeight;
this.height = this.viewer.height; 

这在一定程度上起作用,因为 TextArea 会根据内容的长度而增长或缩小,但它仍然不是很好 - 有时即使 TextArea 的大小已经增长,仍然存在垂直滚动条。

有人有什么想法吗?

谢谢

亚当

【问题讨论】:

    标签: apache-flex flex3 adobe


    【解决方案1】:

    我认为问题不在于您动态添加的组件,而在于它们被添加到的组件。这个组件的高度是如何确定的?如果您将此容器上的verticalScrollPolicy 和horizo​​ntalScrollPolicy 设置为关闭,您的滚动条会消失吗?如果是这种情况,那么您需要查看此组件的大小,而不是您的 hbox、vbox 或您要添加的任何内容。

    【讨论】:

    • 您好,感谢您的回复。动态组件被添加到 Canvas 对象中。它的尺寸是通过设置顶部、左侧、右侧和底部属性来确定的,我需要容器在必要时显示一个滚动条——我正在寻找其中的子项,以便他们永远不需要单独的滚动条。但是,如果我错过了您问这个问题的原因,我将容器上的两个滚动策略都设置为关闭。外部滚动条消失了,但动态组件现在在底部被裁剪掉了,仍然有一个滚动条
    • 啊,所以我建议设置滚动策略以确定滚动条显示在哪个容器上。我想也许你正确地调整了内部容器的大小,但不是外部容器,但情况似乎并非如此。这是:this.viewer.height = this.viewer.textHeight; this.height = this.viewer.height;您应用的唯一尺寸代码?
    • 实际上它比这有点棘手,因为我首先将 HBoxes 和 VBoxes 添加到 Canvas 对象,然后将 LibraryContentContainers 添加到 HBoxes 和 VBoxes。这些尺寸有两种不同的方式。 VBox 的高度是通过添加其所有子项的高度来确定的。 HBox 的高度是通过找到它的孩子的最大高度来确定的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    相关资源
    最近更新 更多