`
蒙太奇
  • 浏览: 52194 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

像IE7一样的Flex TabBar 小控件

    博客分类:
  • flex
阅读更多
       本文为原创文章,如果转载请注明出处: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

    flex4 TabBar skin

    iOS tabbar navigation 控件结合

    iOS tabbar navigation 控件结合实例。可以看下,很有参考价值。强烈推荐。

    Sample-Flex4-TabBar

    《Flex4 TabBar组件的深度探索与应用实例》 在Adobe Flex 4中,TabBar是一种常见的用户界面组件,用于创建具有多个选项卡的应用界面,它允许用户在不同的视图或内容之间进行切换。TabBar组件是Spark组件库的一部分...

    flex tabBar

    在IT行业中,`flex tabBar`通常指的是使用Flex布局来实现的底部导航栏。这是一种常见的用户界面元素,尤其在移动应用中广泛使用,用于在多个页面或功能之间切换。`flex tabBar`利用CSS Flexible Box(Flexbox)布局...

    tabbar控件

    在iOS和Android应用开发中,`TabBar`控件是一个非常关键的组件,它用于实现底部导航栏,帮助用户在不同的功能模块之间切换。自定义`TabBar`可以使应用程序更符合设计规范,提升用户体验,同时也能突出品牌的独特性。...

    Flex中TabBar标题过多的另外实现

    在Flex开发中,TabBar组件通常用于创建带有多个选项卡的应用界面,每个选项卡代表一个独立的功能区域。然而,当TabBar中的标题数量过多时,可能会导致界面拥挤,影响用户体验。在这种情况下,开发者通常需要寻找一种...

    非常灵活易用的Android TabBar选项卡控件

    本篇将详细介绍一个高度定制化的Android TabBar选项卡控件,它具备灵活性高、易用性强的特点,适用于构建各种样式的选项卡布局。 这个控件允许开发者使用任意View进行组合布局,这意味着你可以根据需求自由地设计每...

    小程序tabbar素材

    在微信小程序开发中,TabBar 是一个至关重要的组件,它位于小程序页面的底部,用于展示主要功能模块的快捷入口,通常包含2-5个图标和文字。本资源包"小程序tabbar素材"提供了专为微信小程序设计的TabBar图形元素,以...

    微信小程序 自定义tabbar (源码)

    微信小程序 自定义tabbar (源码)微信小程序 自定义tabbar (源码)微信小程序 自定义tabbar (源码)微信小程序 自定义tabbar (源码)微信小程序 自定义tabbar (源码)微信小程序 自定义tabbar (源码)微信小程序 自定义...

    微信小程序tabbar图标素材

    在微信小程序中,TabBar 是一个至关重要的组件,它位于小程序页面底部,通常包含固定的一组功能入口,如首页、分类、购物车、个人中心等,为用户提供便捷的操作导航。 TabBar 图标是用户界面设计中的关键元素,它们...

    小程序自定义tabbar

    在微信小程序中,开发者有时需要根据自己的应用设计和交互需求,对系统默认的tabbar进行自定义,以提供更个性化的用户体验。标题“小程序自定义tabbar”所指的就是这个过程,即通过编写HTML和JavaScript代码,来创建...

    Flex中TabBar自动换行的实现

    在Flex开发中,TabBar组件通常用于展示多个选项卡,用户可以轻松地在不同视图之间切换。然而,默认情况下,Flex的TabBar组件不会自动换行,而是将所有选项卡排列在同一行,如果选项卡数量过多,超出容器宽度,部分...

    uniapp小程序自定义动态tabbar

    在开发小程序时,UI设计和用户体验是至关重要的部分,而TabBar(标签栏)作为页面间的导航工具,其样式和功能的定制性直接影响了用户的交互体验。uni-app是一款多端开发框架,它允许开发者用一套代码实现跨平台的小...

    微信小程序源码(含截图)自定义tabbar

    微信小程序源码(含截图)自定义tabbar微信小程序源码(含截图)自定义tabbar微信小程序源码(含截图)自定义tabbar微信小程序源码(含截图)自定义tabbar微信小程序源码(含截图)自定义tabbar微信小程序源码(含...

    IOS自适应的可定制的TabBar 控件

    本篇文章将详细讲解一个自适应且可定制的iOS TabBar控件,它能够帮助开发者创建出更加符合用户需求和设计风格的TabBar。 标题中的“IOS自适应的可定制的TabBar 控件”指的是一个专门针对iOS平台的TabBar实现,该...

    优雅实现微信小程序动态tabBar,根据不同用户角色显示不同底部导航-更新版(支持自由组合总数超过5个tabBar菜单)

    1、小程序底部的tabBar需要根据不同用户角色显示不同底部导航。 2、使用自定义底部导航custom-tab-bar优雅实现微信小程序动态tabBar。 3、实现自由组合tabBar菜单项目,支持自由组合总数超过5个tabBar菜单。 4、本...

    微信小程序——自定义tabbar(截图+源码).zip

    微信小程序——自定义tabbar(截图+源码).zip 微信小程序——自定义tabbar(截图+源码).zip 微信小程序——自定义tabbar(截图+源码).zip 微信小程序——自定义tabbar(截图+源码).zip 微信小程序——自定义...

    uniapp小程序tabbar图标

    在开发uniapp小程序时,`tabbar`是应用底部固定的导航栏,用于切换不同功能模块。它是用户界面的重要组成部分,提供了便捷的页面间导航。uniapp是一个基于Vue.js的多端开发框架,允许开发者编写一次代码,即可在iOS...

    uniapp 微信小程序tabbar凸起的显示

    在开发微信小程序时,UI设计和用户体验是至关重要的部分,特别是在构建导航栏(tabbar)时。`uniapp`是一个跨平台的开发框架,它允许开发者使用一套代码库来构建多端应用,包括微信小程序。在`uniapp`中处理微信小...

    tabbar练习小项目

    在这个"tabbar练习小项目"中,我们将深入探讨TabBar的实现、设计原则以及它在实际应用中的运用。 TabBar的基本功能: 1. **导航**:TabBar的主要功能是提供用户在应用内的导航,让用户能够快速访问主要的功能区域。...

Global site tag (gtag.js) - Google Analytics