最近用到Flex的TabNavigator控件,它需要动态的增删Children,当删除所有的Children再添加两个以上Children时就出现了bug,即上一次tab选择状态会保留下来,即使你设置selectedIndex为0,上一次选的是1它选择状态还会是1,这在用户体验上是绝对不友好的。网上没有搜索到解决办法,只好研究其源代码了,并最终找到了解决方案,把我自己写的继承的这个TabNavigator控件附上,希望对大家有帮助:
注释也写的很清楚
package common.containers
{
import flash.display.DisplayObject;
import mx.containers.TabNavigator;
/**
* 本身的TabNavigator在更新本身时候不能更新TabBar,所以自己覆盖了一下
* @author Pursuit
*
*/
public class MyTabNavigator extends TabNavigator
{
public function MyTabNavigator()
{
super();
}
/**
*设置为null很重要,否则TabBar保存了状态而ViewStack却没有,
*造成不 一致,给用户造成误解
*
*/
override public function removeAllChildren():void
{
super.removeAllChildren();
tabBar.dataProvider=null; //否则下一次添加时,其tabBar不在更新了
}
/**
* 重写此方法,目的是可以更新TabNavigator的tabBar控件,让其选择状态正确显示
* @param child
* @param index
* @return
*/
override public function addChildAt(child:DisplayObject,index:int):DisplayObject
{
super.addChildAt(child, index);
commitProperties(); //更新tabBar
return child;
}
}
}
分享到:
相关推荐
flex TabNavigator tab倒置
NULL 博文链接:https://zhangyinyou.iteye.com/blog/671128
flex3 tabnavigator一个很好的例子
Flex3 TabNavigator 可关闭tab简单实现
Flex3 排版为竖着的TabNavigator实例。
Flex4.6 带图标的TabNavigator的使用,这是个简单的列子供初学者学习一下。
NULL 博文链接:https://toeo.iteye.com/blog/644341
这是一个封装好的flex项目,可以直接运行,TestTabNavigator.mxml是运行主页。里面定义了TabNavigator控件选中与被选中的皮肤类,皮肤类可以自己进行更改,也可以设置颜色渐变等等。希望对大家有帮助。
设置TabNavigator组件的标签头的自定义皮肤,可以设置样式等等,内容较少,只是提供一种自定义皮肤设置的思路
NULL 博文链接:https://kisscjy.iteye.com/blog/574873
主要介绍了Flex中TabNavigator如何设置Tabs样式有哪些思路,感兴趣的朋友可以看看下面的源码
Flex中做得一个垂直button和一个含有垂直标签的TabNavigator
前言 大家应该都有所体会,我们在一般应用都有跨tab跳转的需求, 这就需要特别...首先选择路由结构, 选择使用最外层是StackNavigator, 然后包含3个TabNavigator和其他组件. const Components = { HomeTwo: { scree
包含flex4panel 不修改皮肤的圆角标题栏,According 控件缓慢展开,NavigaotrContent加icon,TabNavigator Tab头圆角和垂直空隙为0的调节. 外部字体导入和使用,app存放cookie的路径和本地线程调用的示例代码.
TabNavigator一个react-native 底部菜单
3.17节在TabNavigator内创建、启用和禁用TAB组件(TabControls) 3.18 节使用可关闭Tabs 创建一个TabNavigator 3.19 节创建和控制Alert 3.20 节根据呼出组件设置对话框的尺寸和位置 3.21 节管理多个弹出对话框 3.22 节...
感觉比flexlib.swc的SuperTabNavigator更好用
LinkButton | Menu | MenuBar | PopUpButton | PopUpMenuButton | ProgressBar | TabNavigator ToggleButtonBar | Tree | VScrollBar 为了方便使用,将Spark组件单独剥离出来,使用方案如下:(只限于spark组件) ...
在FLEX中使用样式方法 2 一 .使用本地样式定义 2 二、使用外部样式表 3 三、使用内联样式 4 四、使用setStyle()方法 4 五、脚本方法 4 Application组件样式属性 5 panel组件样式属性 5 color文本颜色 6 TabNavigator...
在FLEX中使用样式方法 2 一 .使用本地样式定义 2 二、使用外部样式表 3 三、使用内联样式 4 四、使用setStyle()方法 4 五、脚本方法 4 Application组件样式属性 5 panel组件样式属性 5 color文本颜色 6 TabNavigator...