FLex3中弹出窗口包含TabNavigator时标签页的标题可能显示不完全
Application的代码如下
弹出窗口MyPanel的代码如下
copy
运行后发现第一个标签页的标题显示为“基本...”。 经跟踪后发现,Flex执行代码的顺序如下
[cpp]?
copy
在Tab的measureText方法中,由于第一个标签页的样式名称为activeTabStyle,所以会调用UITextFormat.measureText()并最终调用UITextFormat.measure()来获取标题的宽度。在计算宽度时,执行语句
[javascript]?
copy
调用TextFieldFactory的createTextField方法来获取一个文本控件TextField,然后设置该文本控件的text并获取宽度。 TextFieldFactory的createTextField方法获取文本控件的方式似乎是获取最后一个创建的文本控件,如果tabNavigator的creationPolicy为auto,会获取到clostBtn的textField,如果tabNavigator的creationPolicy为all,则会获取到msgLbl的textField。由于标签页的标题默认是加粗显示,所以如果获取到的TextField的样式不是加粗(fontWeight != 'bold'),那么计算出来的宽度会小于实际的宽度,从而使显示出来的标题被截断。(在Flex中,Label默认不加粗,Button的文本默认加粗) 因此,问题的解决方法有3种: 1.增加样式activeTabStyle并设置字体不加粗。下面的代码为了统一标题的样式,也设置了TabNavigator的tabStyleName样式。
copy
2.保证最后一个文本控件的字体是加粗的。如以上的代码如果TabNavigator的creationPolicy是默认的auto,则由于closeBtn默认是加粗的,因此可以不设置。如果creationPolicy是all,则必须保证最后一页的最后一个控件的字体是加粗的,也可以放一个不显示的Label,如
copy
3.在第一个标签页的label后加一个空格,如
copy
经试验,所需空格的数量标题的长度有关,当标题只有一个字时不用加空格,之后每增加4个字要加一个空格。 ? ? 如果弹出窗口时不执行PopUpManager.centerPopUp(),或者不用弹出窗口、TabNavigator直接显示在Application中,此时TabNavigator显示出来后会再刷新一次从而显示正确的标题,因此不需做任何改动。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- vb.net 教程 5-13 图像处理之像素处理1
- c – UnitTest入门
- function – 在Swift 2.0中使用reduce()时出错
- c# – 我的PocketPC项目中当前禁用了可视继承
- ruby-on-rails – Group_by – Ruby / Rails Postgres
- c – 使用constexpr函数的斐波那契(编译时间与运行时间)
- c# – 为什么我不能继承LinkedListNode?
- Flash CS6 专业版破解教程、Flash CS6 激活序列号、破解补丁
- c – 使用APR构建log4cxx
- Oracle APEX 系列文章4:在阿里云上打造属于你自己的APEX完
- 在Mac上并行维护两个Xcode版本
- actionscript-3 – 是否首选导入类(例如import f
- ruby-on-rails – 为什么Heroku返回’devise / s
- 如何指定用于Doctrine 2.2 / Symfony 2.2和Postg
- [INS-13001] Environment Does not Meet Minimum
- c – std :: ofstream :: close()实际上做了什么
- c – 为什么在抛弃指向该对象的指针而不是UB后写
- cocos2dx 3d开源项目 fantasyWarrior3D 从零走起
- c# – 使用Random()和颜色解释有趣的现象
- postgresql/greenplum查询依赖于表上的视图