hasseg.org

Vertical TabNavigator Component for Flex

Filed under ActionScript 3, Flex, Programming

I Some time ago ran into a situation with a Flex app I was working on where I needed to use a TabNavigator component, but have its TabBar situated on the left or right side of the ViewStack (instead of on the top, where it is in the default TabNavigator.) I Could not find any workable solutions online (the ones I did find could pretty much be described as ugly hacks,) so I made my own by extending the default TabNavigator. I Submitted this component to the flexlib project, but since it has pretty much been ignored in the discussion group, I thought I'd post it here to make it available to the general public.

Update (same day as orig. post): Added simple demo and example code on how to use the component. Added comment about using embedded fonts.

The way this works is basically by taking the TabBar component (a child of the whole TabNavigator component,) rotating it to make it vertical, positioning it to either side of the ViewStack, and making several adjustments to the component's size to accommodate the new location of the TabBar. One thing to remember when using this is that you need to embed the font you want to use for the TabBar labels with your app, since rotated text doesn't work in Flash player with system fonts. Also make sure that you're embedding a bold version of the font, since text in the TabBar buttons is bold by default.

I Used Flex 2.0.1 to do this. Below you can look at the demo and see how it looks, download the zipped source, or just look at the code:

VerticalTabNavigatorDemo.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
	xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:hassegContainers="org.hasseg.containers.*"
	width="100%" height="100%"
	layout="horizontal"
>
	
	<mx:Style>
		/* embedded font */
		@font-face {
			src:url("Charrington.ttf");
			fontFamily: myFont;
			flashType: true;
		}
		
		/* embedded font, bold */
		@font-face {
			src:url("CharringtonBold.ttf");
			fontFamily: myFont;
			flashType: true;
			fontWeight: bold;
		}
		
		/* Must use embedded font (bold version) for
		*  VerticalTabNavigator's TabBar because rotating
		*  text in the flash player requires that the fonts
		*  be embedded and not system fonts. Using global
		*  selector here for convenience.
		*/
		global {
			fontFamily: myFont;
			fontSize: 13pt;
		}
		
	</mx:Style>
	
	
	<hassegContainers:VerticalTabNavigator
						width="200" height="400"
						tabBarLocation="left"
						verticalAlign="top"
	>
		<mx:Box label="one">
			<mx:Label text="area one" />
		</mx:Box>
		<mx:Box label="two">
			<mx:Label text="area two" />
		</mx:Box>
		<mx:Box label="three">
			<mx:Label text="area three" />
		</mx:Box>
	</hassegContainers:VerticalTabNavigator>
	
	<mx:Spacer width="50" />
	
	<hassegContainers:VerticalTabNavigator
						width="200" height="400"
						tabBarLocation="right"
						verticalAlign="middle"
	>
		<mx:Box label="one">
			<mx:Label text="area one" />
		</mx:Box>
		<mx:Box label="two">
			<mx:Label text="area two" />
		</mx:Box>
		<mx:Box label="three">
			<mx:Label text="area three" />
		</mx:Box>
	</hassegContainers:VerticalTabNavigator>
	
</mx:Application>

VerticalTabNavigator.as:

/*

The MIT License

Copyright (c) 2007-2008 Ali Rantakari

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

*/

package org.hasseg.containers {
	
	import flash.display.DisplayObject;
	import mx.containers.TabNavigator;
	import mx.core.EdgeMetrics;
	import mx.core.IFlexDisplayObject;
	import mx.core.IInvalidating;
	import mx.core.mx_internal;
	import mx.skins.ProgrammaticSkin;
	
	use namespace mx_internal;
	
	/**
	*  Vertical positioning of tabs at the side of this VerticalTabNavigator container.
	*  The possible values are <code>"top"</code>, <code>"middle"</code>,
	*  and <code>"bottom"</code>.
	*  The default value is <code>"top"</code>.
	*
	*  <p>If the value is <code>"top"</code>, the top edge of the tab bar
	*  is aligned with the top edge of the VerticalTabNavigator container.
	*  If the value is <code>"bottom"</code>, the bottom edge of the tab bar
	*  is aligned with the bottom edge of the VerticalTabNavigator container.
	*  If the value is <code>"middle"</code>, the tabs are centered on the side
	*  of the VerticalTabNavigator container.</p>
	*
	*  <p>To see a difference between the alignments,
	*  the total width of all the tabs must be less than
	*  the height of the VerticalTabNavigator container.</p>
	*/
	[Style(name="verticalAlign", type="String", enumeration="top,middle,bottom", inherit="no")]
	
	/**
	* A TabNavigator that positions the tab bar to either side
	* (left or right) of the component instead of at the top.
	* 
	* <p>The value of the <code>tabBarLocation</code> property determines
	* whether to position the tab bar to the left or the right side.</p>
	* 
	* <p>The <code>verticalAlign</code> style property can be used to 
	* align the tab bar with the top or the bottom of the component, or to
	* vertically center it.</p>
	* 
	* @see mx.containers.TabNavigator
	* 
	* @author Ali Rantakari
	*/
	public class VerticalTabNavigator extends TabNavigator {
		
		// copied from superclass:
		private static const MIN_TAB_WIDTH:Number = 30;
		
		private var _tabBarLocation:String = "left";
		
		
		
		/**
		* Constructor.
		*/
		public function VerticalTabNavigator():void {
			super();
		}
		
		
		
		// BEGIN: private methods			-----------------------------------------------------------
		
		protected function get tabBarHeight():Number {
			return tabBar.getExplicitOrMeasuredWidth();
		}
		
		protected function get tabBarWidth():Number {
			var tabWidth:Number = getStyle("tabHeight");
			
			if (isNaN(tabWidth))
				tabWidth = tabBar.getExplicitOrMeasuredHeight();
			
			return tabWidth - 1;
		}
		
		// --end--: private methods		- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		
		
		
		
		
		
		
		// BEGIN: overridden methods			-----------------------------------------------------------
		
		
		/**
		* @private
		*/
		override protected function createChildren():void {
			super.createChildren();
			if (tabBar) {
				tabBar.setStyle("paddingLeft", 0);
				tabBar.setStyle("paddingRight", 0);
			}
		}
		
		/**
		* @private
		*/
		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
			super.updateDisplayList(unscaledWidth, unscaledHeight);
			
			// determine the TabBar size based on the height of
			// the container instead of the width
			var vm:EdgeMetrics = viewMetrics;
			var h:Number = unscaledHeight - vm.top - vm.bottom;
			
			var th:Number = tabBarWidth + 1;
			var pw:Number = tabBar.getExplicitOrMeasuredWidth();
			tabBar.setActualSize(Math.min(h, pw), th);
			
			
			// rotate and position the TabBar based on the verticalAlign style
			// property and the tabBarLocation property
			var vAlign:String = getStyle("verticalAlign");
			var allowedVerticalAlignValues:Array = ["top", "bottom", "middle"];
			if (allowedVerticalAlignValues.indexOf(vAlign) == (-1)) vAlign="top";
			
			if (_tabBarLocation == "left") {
				if (tabBar.rotation != 270) tabBar.rotation = 270;
				
				if (vAlign == "top") tabBar.move(0,tabBar.width);
				else if (vAlign == "middle") tabBar.move(0,(unscaledHeight/2+tabBar.width/2));
				else if (vAlign == "bottom") tabBar.move(0,unscaledHeight);
			}else{ 
				if (tabBar.rotation != 90) tabBar.rotation = 90;
				
				if (vAlign == "top") tabBar.move(unscaledWidth,0);
				else if (vAlign == "middle") tabBar.move(unscaledWidth,(unscaledHeight/2-tabBar.width/2));
				else if (vAlign == "bottom") tabBar.move(unscaledWidth,unscaledHeight-tabBar.width);
			}
		}
		
		/**
		* @private
		*/
		override protected function measure():void {
			super.measure();
			
			// remove the height addition made by superclass (tabs are
			// now on the side, not the top)
			var removedHeight:Number = tabBarWidth;
			measuredMinHeight -= removedHeight;
			measuredHeight -= removedHeight;
			
			// add width (same reason as above)
			var addedWidth:Number = tabBarWidth;
			measuredMinWidth += addedWidth;
			measuredWidth += addedWidth;
			
			
			
			// Make sure there is at least enough room
			// to draw all tabs at their minimum size.
			var tabWidth:Number = getStyle("tabWidth");
			if (isNaN(tabWidth)) tabWidth = 0;
			
			var minTabBarWidth:Number = numChildren * Math.max(tabWidth, MIN_TAB_WIDTH);
			
			// Add view metrics.
			var vm:EdgeMetrics = viewMetrics;
			minTabBarWidth += (vm.top + vm.bottom);
			
			// Add horizontal gaps.
			if (numChildren > 1) 
				minTabBarWidth += (getStyle("horizontalGap") * (numChildren - 1));
			
			if (measuredHeight < minTabBarWidth) measuredHeight = minTabBarWidth+tabBarWidth;
		}
		
		/**
		* @private
		*/
		override protected function get contentHeight():Number {
			// undo content height adjustment made by superclass
			return super.contentHeight + tabBarWidth;
		}
		
		/**
		* @private
		*/
		override protected function get contentWidth():Number {
			// adjust content width to accommodate the tab bar
			var vm:EdgeMetrics = viewMetricsAndPadding;
			
			var vmLeft:Number = vm.left;
			var vmRight:Number = vm.right;
			
			if (isNaN(vmLeft))
				vmLeft = 0;
			if (isNaN(vmRight))
				vmRight = 0;
			
			return unscaledWidth - tabBarWidth - vmLeft - vmRight;
		}
		
		/**
		* @private
		*/
		override protected function get contentX():Number {
			// adjust content position to accommodate the tab bar
			var paddingLeft:Number = getStyle("paddingLeft");
			
			if (isNaN(paddingLeft))
				paddingLeft = 0;
			
			if (_tabBarLocation == "left") return tabBarWidth + paddingLeft;
			else return paddingLeft;
		}
		
		/**
		* @private
		*/
		override protected function get contentY():Number {
			// undo content position adjustment made by superclass
			return super.contentY - tabBarWidth;
		}
		
		/**
		* @private
		*/
		override protected function adjustFocusRect(object:DisplayObject = null):void {
			super.adjustFocusRect(object);
			
			// Undo changes made by superclass:
			// "Adjust the focus rect so it is below the tabs"
			// - and redo the same thing with width instead of height
			var focusObj:IFlexDisplayObject = IFlexDisplayObject(getFocusObject());
			
			if (focusObj)
			{
				focusObj.setActualSize(focusObj.width - tabBarWidth, focusObj.height + tabBarWidth);
				
				if (_tabBarLocation == "left") focusObj.move(focusObj.x + tabBarWidth, focusObj.y - tabBarWidth);
				else focusObj.move(focusObj.x, focusObj.y - tabBarWidth);
				
				if (focusObj is IInvalidating)
					IInvalidating(focusObj).validateNow();
				
				else if (focusObj is ProgrammaticSkin)
					ProgrammaticSkin(focusObj).validateNow();
			}
		}
		
		/**
		* @private
		*/
		override protected function layoutChrome(unscaledWidth:Number, unscaledHeight:Number):void {
			super.layoutChrome(unscaledWidth, unscaledHeight);
			
			// Undo changes made by superclass:
			// "Move our border so it leaves room for the tabs"
			// - and redo the same thing with width instead of height
			if (border)
			{
				var borderOffset:Number = tabBarWidth;
				border.setActualSize(unscaledWidth - borderOffset, unscaledHeight);
				if (_tabBarLocation == "left") border.move(borderOffset, 0);
				else border.move (0, 0);
			}
		}
		
		
		// --end--: overridden methods		- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		
		
		
		
		
		
		
		// BEGIN: public methods			-----------------------------------------------------------
		
		/**
		* The location of the TabBar (left or right). Possible
		* values are <code>"left"</code> and <code>"right"</code>.
		*/
		public function get tabBarLocation():String {
			return _tabBarLocation;
		}
		/**
		* @private
		*/
		public function set tabBarLocation(aValue:String):void {
			if (aValue == "left" || aValue == "right") _tabBarLocation = aValue;
			else throw new ArgumentError("Value for tabBarLocation must be either \"left\" or \"right\"");
		}
		
		// --end--: public methods		- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		
		
		
		
		
	}
	
}

43 Comments

sagaris March 22, 2008 at 4:17 AM

thank you for provide the components! thanks!

Michael Huensch April 21, 2008 at 7:15 AM

Just what I was looking for! I’m not sure why the flexlib guys would ignore this, but its something that is missing from the SuperTabNavigator for sure!

Great Job!

Ali Rantakari April 22, 2008 at 10:19 AM

Great to see this is of some use to others as well. Just a quick note: I’m currently using this in a Flex 3 project, and it seems to work just as well as in Flex 2.0.1. Just FYI. ;)

Gabriela Perry June 23, 2008 at 2:21 AM

Hi, Hasseg. You just saved me a lot of work. I am going to use your VerticalTabNavigator in an educational project (the software will be freely distributed). Congratulations :0)

Romeo July 23, 2008 at 6:34 AM

Thank you for this great example. :)

Brent September 5, 2008 at 6:09 PM

Thanks man..just what I needed.

Joe September 8, 2008 at 7:16 PM

I really like your component but there two properties I didn’t quite knowing how to set:

  1. How to have cornerRadius mirror on the bottom as well?
  2. How to offset the tab so it looks great with rounded corner instead of always align top?

Thanks!

Ali Rantakari September 8, 2008 at 7:31 PM

Hi Joe,

I’m not quite sure I understood what you mean exactly, but you should be able to quite easily figure out how to achieve the look you want with Flex Style Explorer:

http://examples.adobe.com/flex3/consulting/styleexplorer/Flex3StyleExplorer.html

The CSS property “cornerRadius” should set the radius for all corners of the ViewStack as you can see in the above app by selecting the TabNavigator component from the left and then adjusting the cornerRadius.

Joe September 19, 2008 at 7:13 AM

Hi Ali,

Thank you for your quick response. What I was looking for is that in my design, I normally don’t align the tabs to the very top or very left but instead offset about 30 pixels because of the rounded corner of the content area. I found out from Flex3Explorer that the TabNavigator using paddingLeft, paddingRight for that purpose. However, in your component verticalTabNavigator is using these value for the canvas inside each tab.

Am I doing something wrong?

Regards,

Ali Rantakari September 19, 2008 at 2:37 PM

Hey Joe,

Ok – so it looks like a style called “tabOffset” was added to the TabNavigator component in Flex 3 for this exact purpose. My vertical version is based on the code from the Flex 2 TabNavigator, which didn’t have this feature, so in order to add support for it (i.e. to translate the horizontal tabOffset implementation to the a vertical one) you’d have to go through the Flex 3 TabNavigator code, see where this is implemented and how, and then translate that to the VerticalTabNavigator.

Unfortunately I don’t have the time to do this myself, but if you get it working, please let me know.

  • Ali
Gauri November 6, 2008 at 11:39 AM

Hi Hasseg,

Thanks for sharing this component. I used this in my project. I used teh same font file you shared. But I am not able to see any text on tabs. Blank tabs are coming , seems the there is some problem with text rotating. Can you pls help me out?

mNm November 6, 2008 at 6:32 PM

Gauri, I had the same problem and solved it by including a Bold style in the stylesheets

Sam December 1, 2008 at 2:07 PM

Hi Ali,

This is a great class, thanks! I am wondering, would you know how to properly align the text horizontally? It seems a pretty complex thing to do! Would that be to do with the measure function and the button class itself?

Any info you could offer would be great!

Ali Rantakari December 1, 2008 at 2:40 PM

Hi Sam,

If you’re talking about the alignment of the text in the TabBar button labels, take a look at the documentation for the tabStyleName property for the TabNavigator class. You should be able to specify the styleName of the tabs in the TabNavigator’s TabBar with that.

Sam December 1, 2008 at 3:06 PM

Hi Ali,

Thank you for responding so quick. I can access the tab styles no problem. What I am having difficulty with is rotating the text so that it displays horizontally again and then getting it to align correctly within the button itself. I think it means overriding the button class or something.

Thanks

Ali Rantakari December 1, 2008 at 3:18 PM

Sam,

I would look into subclassing the TabBar class, implementing it so that the buttons would be rotated 90 degrees, and then replacing the VerticalTabNavigator’s tabBar with an instance of this new class. You would then also have to change the VerticalTabNavigator implementation so that the text would be the right way regardless of which side of the viewStack the tabBar is on by playing with the rotation of the tabBar itself or the buttons within it.

Nikita February 10, 2009 at 4:44 PM

Usefull.Very usefull components :)

Steven Rieger March 17, 2009 at 6:45 PM

Hi Ali,

First, I’d like to say thank you very much for publishing the code for the most excellent component!

I do have a question for you.

Is there a way to wrap the tab navigator such that if the tabs exceed the height of the parent container, rather than shrink the tab names, enable a vertical scrollbar in the parent container?

Thanks again for your awesome code!!!

Ali Rantakari March 19, 2009 at 3:25 PM

Hi Steven,

Unfortunately I don’t have time to look into this right now, sorry :/ I would suggest you look at the source code of the standard Flex TabNavigator component – you might find what you’re looking for there and be able to implement this feature in a subclass.

Morgan March 31, 2009 at 5:22 PM

Hi, You can embed a system font using a trick, put this in your instead of embedding a font in your :

[Embed(systemFont=‘Arial’, fontWeight=‘bold’, fontName=‘myFont’, mimeType=‘application/x-font’, advancedAntiAliasing=‘true’)] private var font1:Class;

and then leave the myFont reference as the fontFamily in your

Morgan

6 Tips for a Great Flex UX: Part 4 April 21, 2009 at 7:41 PM

[…] Degrafa ToggleButtonBar vertical tabs Vertical Tab Navigator […]

shaman4d August 17, 2009 at 5:37 PM

Thank you very much for the usefull stuff!

firas June 2, 2010 at 1:01 PM

Hi,

thanks for presenting your solution, but it didn’t work for me,

before i couldn’t write vertical test on my component, and still after i did copy your component i cant do that nither, so i would like to ask for help, maybe someone had the same proble,

the tabs work perfectly but no text is shown,

suresh August 9, 2010 at 3:41 PM

Hi, I’m new to flex(3). currently I’m using vertical tabnavigator in my application. presently all tab names displaying vertically but,i need to display names horizontally.design is same but names only i want to change in horizontal order. what can i do. please send solution to my mail id: sureshmonopolyinjava@gmail.com

Kumar Kalra October 8, 2010 at 6:31 PM

Hi, Thank you for the vertical navigator. I have a question. How can i rotate the icons. I am new to flex. I want to rotate the icons which i am using for tabs. Please help me. Its urgent.

Thanks, Kumar

nshaukat November 15, 2010 at 8:09 AM

What do replace the line xmlns:hassegContainers=“org.hasseg.containers.*” with since this line referes to hasseg.org. I get an error at line <hassegContainers:VerticalTabNavigator when I compile it.

juri December 2, 2010 at 6:19 PM

cool, thanks for this.

To the previous, you should point the namespace to whatever package you placed the components source code.

Ajay December 4, 2010 at 2:53 PM

Im not able to view any text in tab’s labels;also styles are not getting applied.pls help me out in this as i want to apply this feature in project. Thanks in advance; Ajay

abhishek December 6, 2010 at 2:31 PM

Im not able to view any text in tab’s labels please help me out in this. Thanks in advance; abhishekchess1@gmail.com :)

juri December 9, 2010 at 8:26 PM

Has anyone been able to rotate text as mentioned in posts #15 & 16 ? If so, would he be so kind to show an example thanks

juri December 28, 2010 at 5:33 PM

well, something like this works

if (_tabBarLocation == “left”) { if (tabBar.rotation != 270){ tabBar.rotation = 270;

var tab:Tab = tabBar.getChildAt(0) as Tab; tab.rotation = 90;tab.scaleX=.6;

maybe make it neater outside this method or something

Jasmank May 3, 2011 at 1:07 PM

This is great.. Can I use this is flex builder 3. If not, what can I do use it.

Pranav May 17, 2011 at 2:59 PM

Great post! Still looking for label rotating of tabs, I also wanted to word Wrap in tabs if label is to large. Can anyone help me to achieve this also? Thanks in advance.

Iamso May 30, 2011 at 12:14 PM

Thanks for your components! thanks!

Cody July 5, 2011 at 11:05 PM

Hey, I’m having a problem displaying the font on the tabs and the panels. I copied your source, and it still doesn’t show up. I recall seeing this problem in posts above, but I still cannot solve this. Could anyone post a direct solution? I’d really appreciate it.

Rana November 16, 2011 at 1:51 PM

Hi , I used this but it’s can’t work on the flashbulider 4.5 please what am going to do i will get the blank label part can please said for the 4.5 source code thank u

Sweety January 12, 2012 at 12:16 AM

Hi,

Same here .not able to see the lables in tab ,using flashbuilder 4.5. Do anybody have a solution.Please let us know.

Thanks.

Sweety January 27, 2012 at 12:30 AM

Finally i made it working .

If any one is looking for solution for displaying label in the tab’s with Flex 4.5 sdk . Go through this . Copy the below styles .

  1. @font-face { src:url(‘CharringtonBold.ttf’); fontFamily: myFontFamily; embedAsCFF: false; } @font-face { src:url(‘CharringtonBold.ttf’); fontFamily: myFontFamily; embedAsCFF: true; }

embedAsCFF is the key here . True will be used for spark components ,false for mx controls. As our tabNavigator is mx control we need to set embedAsCFF as False . But if we used spark components inside tabNavigator then we should set two fonts like above one with false and one with true .

  1. insted of setting this embeded font for whole app , you can do this ,give a style name for vertical tab Navigation say “verticalTabStyle” And copy the following style .verticalTabStyle { fontFamily: myFontFamily; fontSize: 13; fontWeight : bold; }

Thats it .

Let me if it worked or not .

Happy flexing !!!!

eugene June 24, 2012 at 4:01 PM

Sweety’s solution to fix the blank label problem with flex4.6 works fine , thank you

Ripetti August 8, 2012 at 1:25 PM

Sweety’s solution is not clear enough for me, sorry. I copied this css fragment to my outline .css file:

.verticalTabStyle { fontFamily: myFontFamily; fontSize: 13; fontWeight : bold; }

Then I set properties to my container like this:

But labels not appear. :( What’s wrong? Thanx

Ripetti August 8, 2012 at 1:37 PM

so like this: hassegContainers:VerticalTabNavigator width=“100%” height=“100%” tabBarLocation=“left” verticalAlign=“top” styleName=“verticalTabStyle”

doug January 17, 2013 at 8:28 PM

This is not working for me in 4.7 Builder and 4.6 SDK. Vertical fonts will not show up. All solutions here do not work.

Any ideas?

Thanks

/*	global {
		fontFamily: myFont;
		fontSize: 13pt;
	}
	
	*/
	.verticalTabStyle {
		fontFamily: myFontFamily;
		fontSize: 13;
		fontWeight : bold;
	}
	/* embedded font */
	@font-face {
		src:url('CharringtonBold.ttf');
		fontFamily: myFontFamily;
		embedAsCFF: false;
	}
	@font-face {
		src:url('CharringtonBold.ttf');
		fontFamily: myFontFamily;
		embedAsCFF: true;
	}
	
	/* Must use embedded font (bold version) for
	*  VerticalTabNavigator's TabBar because rotating
	*  text in the flash player requires that the fonts
	*  be embedded and not system fonts. Using global
	*  selector here for convenience.
	*/
Amrut July 12, 2013 at 1:53 PM

Hi, Even i am facing the same problem, The tab labels are not getting visible.

i tried using tabBar.direction = BoxDirection.VERTICAL; instead of tabBar.rotation

with this the labels are visible but the view is not like tabbed view…

could any one give a solution?

Categories