在 Flex 中处理 TextInput 的宽度和样式

Posted

技术标签:

【中文标题】在 Flex 中处理 TextInput 的宽度和样式【英文标题】:Handling TextInput width and styles in Flex 【发布时间】:2010-12-15 02:14:12 【问题描述】:

我在 Flex 中创建了一个包含几个 TextInput 字段的表单容器,我想更改单击的 TextInput 元素的样式。我设法用 MouseEvent.CLICK 事件监听器做到了,但这不是我所期望的。 当用户尝试编辑该字段时,我想更改 TextInput 的样式。但是,当用户单击另一个 TextInput 字段或任何字段之外时,我想改回“默认”样式。是否有专门针对此类交互的事件侦听器?

我还有一个问题,是否可以根据文本量来设置 TextInput 的宽度?我的意思是将其调整为其中文本的宽度?文本来自某个数据库,并且总是不同的宽度...

感谢您的帮助!

【问题讨论】:

【参考方案1】:

不要使用点击事件,而是使用“焦点”和“模糊”事件。这样,您将在用户点击(或按标签)到该字段时了解该事件,并且当他们离开该字段时您也将了解该事件。

【讨论】:

谢谢!我用 FocusEvent.FOCUS_IN 和 FocusEvent.FOCUS_OUT 监听器解决了这个问题......【参考方案2】:

关于你的第二个问题。如果您没有在文本输入上设置明确的宽度,我认为它会使用flash.text.TextLineMetrics 自动计算其最佳宽度。检查TextInput代码中的measure方法进行验证。

【讨论】:

感谢您的帮助...我确实尝试了一些测量方法和属性,但它们都不起作用=(当我尝试在 TextInput 字段上使用 measureText() 时,我收到此错误: TypeError: Error #2007: Parameter antiAliasType must be non-null. 另外,我在调试器中看到 measureWidth 返回 0...嗯,为什么会这样? 我不是说调用measure()方法,我的意思是看代码看看如果你不设置explicitWidth,控件会做什么。 hmm,我不确定我是否理解正确,但我也检查了 explicitWidth,它的值是 NaN,就像所有其他的 explicitMin/explicitMax Widths/Heights... 稍后我会看看TextInputmeasure 函数,看看您是否需要扩展该类并覆盖该方法以使其自动调整为文本大小。我认为您可以在 TextInput 上设置公共标志,这会导致控件自动调整为文本大小,或者如果您不在控件上设置 width,这将是默认行为。跨度> 仍然没有运气......我在 TextInput.as 内部类中看到我应该在获得 textWidth 值之前调用 validateNow() ,但我总是得到 textWidth 的 NaN 和所有的 0其他属性(宽度、测量宽度等)...

以上是关于在 Flex 中处理 TextInput 的宽度和样式的主要内容,如果未能解决你的问题,请参考以下文章

Flex 3 - 来自 TextInput 的焦点输入/输出

如何在 Flex 4.5 的 TextInput 中控制光标(克拉)位置

Flex Mobile textInput 滚动文本滞后

为不可编辑的 textinput 和 textarea flex 组件设置样式

带有TextInput和按钮的Flex警报

如何知道 TextInput 组件在 Flex 中是不是处于活动状态