本文为原创文章,如果转载请注明出处:
http://summerofthatyear-gmail-com.iteye.com/blog/352348
Flex自带的TabBar只是单纯的显示一排Tab,它没有提供IE7那样后面有一个小Tab,点击后自动新建一个。
我写一个类似IE7 tab的控件,此控件继承自mx.controls.TabBar。功能就是TabBar里始终有一个Tab可供新建Tab页;
控件代码IE7TabBar .as:
package com.montage.controls
{
import com.montage.events.IE7TabBarEvent;
import flash.events.MouseEvent;
import mx.controls.Button;
import mx.controls.TabBar;
/**
* 点击新建tab时所要派发的事件
*/
[Event(name="newItemClick", type="com.montage.events.IE7TabBarEvent")]
/**
*
* @author Montage
*/
public class IE7TabBar extends TabBar
{
public function IE7TabBar()
{
super();
}
[Embed(source="/com/montage/icons/tab_add.png")]
public var addIcon:Class;
private var _newTab:Button;
protected function mouseOutHandler( event:MouseEvent ):void
{
var but:Button = Button( event.currentTarget );
but.setStyle("icon", null);
}
protected function mouseOverHandler( event:MouseEvent ):void
{
var but:Button = Button( event.currentTarget );
but.setStyle("icon", addIcon);
}
override protected function createChildren():void
{
super.createChildren();
_newTab = createNavItem("") as Button;
_newTab.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
_newTab.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
}
override protected function commitProperties():void
{
super.commitProperties();
if( !contains(_newTab) )
addChild(_newTab);
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
if( _newTab )
{
_newTab.toggle = false;
_newTab.setStyle("paddingLeft", 5);
_newTab.setStyle("paddingRight", 5);
_newTab.width = 30;
}
}
override protected function clickHandler(event:MouseEvent):void
{
if( event.currentTarget == _newTab )
{
var evt:IE7TabBarEvent = new IE7TabBarEvent( IE7TabBarEvent.NEW_ITEM_CLICK );
dispatchEvent(evt);
return;
}
super.clickHandler(event);
}
}
}
自定义事件IE7TabBarEvent.as
package com.montage.events
{
import flash.events.Event;
/**
* 给IE7TabBar提供事件支持
* @author Montage
*/
public class IE7TabBarEvent extends Event
{
public static const NEW_ITEM_CLICK:String = "newItemClick";
public function IE7TabBarEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}
使用范例:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:controls="com.montage.controls.*">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import com.montage.events.IE7TabBarEvent;
import mx.events.ItemClickEvent;
[Bindable]
public var dataSource:Array = ["AAA", "BBB", "CCC", "DDD"];
/**
* 侦听到点击新建tab的事件
*/
public function newItemClickHandler( event:IE7TabBarEvent ):void
{
Alert.show("sdssd");
}
]]>
</mx:Script>
<controls:IE7TabBar id="tabBar" dataProvider="{dataSource}" newItemClick="newItemClickHandler( event )"/>
</mx:Application>
- 大小: 488 Bytes
分享到:
相关推荐
flex4 TabBar skin
iOS tabbar navigation 控件结合实例。可以看下,很有参考价值。强烈推荐。
《Flex4 TabBar组件的深度探索与应用实例》 在Adobe Flex 4中,TabBar是一种常见的用户界面组件,用于创建具有多个选项卡的应用界面,它允许用户在不同的视图或内容之间进行切换。TabBar组件是Spark组件库的一部分...
在IT行业中,`flex tabBar`通常指的是使用Flex布局来实现的底部导航栏。这是一种常见的用户界面元素,尤其在移动应用中广泛使用,用于在多个页面或功能之间切换。`flex tabBar`利用CSS Flexible Box(Flexbox)布局...
在iOS和Android应用开发中,`TabBar`控件是一个非常关键的组件,它用于实现底部导航栏,帮助用户在不同的功能模块之间切换。自定义`TabBar`可以使应用程序更符合设计规范,提升用户体验,同时也能突出品牌的独特性。...
在Flex开发中,TabBar组件通常用于创建带有多个选项卡的应用界面,每个选项卡代表一个独立的功能区域。然而,当TabBar中的标题数量过多时,可能会导致界面拥挤,影响用户体验。在这种情况下,开发者通常需要寻找一种...
本篇将详细介绍一个高度定制化的Android TabBar选项卡控件,它具备灵活性高、易用性强的特点,适用于构建各种样式的选项卡布局。 这个控件允许开发者使用任意View进行组合布局,这意味着你可以根据需求自由地设计每...
在微信小程序开发中,TabBar 是一个至关重要的组件,它位于小程序页面的底部,用于展示主要功能模块的快捷入口,通常包含2-5个图标和文字。本资源包"小程序tabbar素材"提供了专为微信小程序设计的TabBar图形元素,以...
微信小程序 自定义tabbar (源码)微信小程序 自定义tabbar (源码)微信小程序 自定义tabbar (源码)微信小程序 自定义tabbar (源码)微信小程序 自定义tabbar (源码)微信小程序 自定义tabbar (源码)微信小程序 自定义...
在微信小程序中,TabBar 是一个至关重要的组件,它位于小程序页面底部,通常包含固定的一组功能入口,如首页、分类、购物车、个人中心等,为用户提供便捷的操作导航。 TabBar 图标是用户界面设计中的关键元素,它们...
在微信小程序中,开发者有时需要根据自己的应用设计和交互需求,对系统默认的tabbar进行自定义,以提供更个性化的用户体验。标题“小程序自定义tabbar”所指的就是这个过程,即通过编写HTML和JavaScript代码,来创建...
在Flex开发中,TabBar组件通常用于展示多个选项卡,用户可以轻松地在不同视图之间切换。然而,默认情况下,Flex的TabBar组件不会自动换行,而是将所有选项卡排列在同一行,如果选项卡数量过多,超出容器宽度,部分...
在开发小程序时,UI设计和用户体验是至关重要的部分,而TabBar(标签栏)作为页面间的导航工具,其样式和功能的定制性直接影响了用户的交互体验。uni-app是一款多端开发框架,它允许开发者用一套代码实现跨平台的小...
微信小程序源码(含截图)自定义tabbar微信小程序源码(含截图)自定义tabbar微信小程序源码(含截图)自定义tabbar微信小程序源码(含截图)自定义tabbar微信小程序源码(含截图)自定义tabbar微信小程序源码(含...
本篇文章将详细讲解一个自适应且可定制的iOS TabBar控件,它能够帮助开发者创建出更加符合用户需求和设计风格的TabBar。 标题中的“IOS自适应的可定制的TabBar 控件”指的是一个专门针对iOS平台的TabBar实现,该...
1、小程序底部的tabBar需要根据不同用户角色显示不同底部导航。 2、使用自定义底部导航custom-tab-bar优雅实现微信小程序动态tabBar。 3、实现自由组合tabBar菜单项目,支持自由组合总数超过5个tabBar菜单。 4、本...
微信小程序——自定义tabbar(截图+源码).zip 微信小程序——自定义tabbar(截图+源码).zip 微信小程序——自定义tabbar(截图+源码).zip 微信小程序——自定义tabbar(截图+源码).zip 微信小程序——自定义...
在开发uniapp小程序时,`tabbar`是应用底部固定的导航栏,用于切换不同功能模块。它是用户界面的重要组成部分,提供了便捷的页面间导航。uniapp是一个基于Vue.js的多端开发框架,允许开发者编写一次代码,即可在iOS...
在开发微信小程序时,UI设计和用户体验是至关重要的部分,特别是在构建导航栏(tabbar)时。`uniapp`是一个跨平台的开发框架,它允许开发者使用一套代码库来构建多端应用,包括微信小程序。在`uniapp`中处理微信小...
在这个"tabbar练习小项目"中,我们将深入探讨TabBar的实现、设计原则以及它在实际应用中的运用。 TabBar的基本功能: 1. **导航**:TabBar的主要功能是提供用户在应用内的导航,让用户能够快速访问主要的功能区域。...