为tabPanel添加一个更多按钮。
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:editor 阅读 346
我们要的效果这个示例由2各部分组成。一个TabPanel,一个overlay。出现的问题为了制作出&ldquo更多&rdquo按钮,大家首先想到的肯定是在TabPanel的tabBar里添加一个it

我们要的效果

这个示例由2各部分组成。

一个TabPanel,一个overlay。

出现的问题

为了制作出“更多”按钮,大家首先想到的肯定是在TabPanel的tabBar里添加一个item就像这样 

但是这会引发一个问题:用户点击了更多按钮时TabPanel会切换回第一个Tab。这显然不是我们想要的效果。这么一个令人纠结的小问题,处理起来,也是令人头皮发麻。

今天重点就是给大家讲解一下,我解决这个问题的整个过程,希望能够给各位一些帮助。

 

问题分析

为什么会切回第一个Tab?

显然tabBar的item被点击后会有默认的事件被触发,我们首先要找出切换tab的逻辑在哪里。

先看api文档,tabbar,隐藏父类的内容。发现没有我们需要的东西。

查看源码发现了一个onTabTap方法,显然,这个就是当tabBar的item点击之后触发的事件。仔细阅读它,发现了this.cardLayout.setActiveItem(tab.card, animConfig || this.cardSwitchAnimation);的语句。十分确定,这就是原因所在。

重写onTabTap方法,输出我们想要的值。

发现,当点击“更多”按钮时log出来的值为undefined。

结论

推断因为this.cardLayout.setActiveItem(tab.card, animConfig || this.cardSwitchAnimation);的tab.card为undefined。因此,当点击“更多”按钮时,tab.card没有值,就会切换到第一个card。

解决方案

  • 给tabBar里的“更多”按钮添加一个bool型的isMoreButton。
  • 重写onTabTap方法,判断isMoreButton,ture的话,不作处理(不要切换)。false的话,执行源码里相同的动作。

结果如下:

 

以下是全部代码:

  
 

 

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2