修改Flex chart中Legend的字体样式

FLEX的图表(CHART)中的Legend 的字体通过直接设置Style 并没有办法改变字体大小.

通过查资料发现了这个方法: 通过派生LegendItem类,并设置Legend的ItemClass属性来实现。

LegendItem 是Lengend 的元素, 就是里面一个一个的图示. 通过派生这个类, 就可以修改其相应的样式.

  1. 派生LegendItem 类, 并设置样式. 

BigFontLegendIte.as

// ActionScript file
package com
{
    import mx.charts.LegendItem;
    
    public class BigFontLegendItem extends LegendItem
    {
        public function BigFontLegendItem()
        {
            super();
            this.styleName = "ChineseFont";
        }
        
    }
}


2.在<s:Application>中添加样式:

<fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        @namespace mx "library://ns.adobe.com/flex/mx";
        .ChineseFont{
            fontFamily:"微软雅黑";
            fontSize:12;
            fontWeight:normal;
        }
    </fx:Style>


3. 在相应的Legend中指定legendItemClass="com.BigFontLegendItem"

<mx:Legend dataProvider="{linechart1}" direction="horizontal" legendItemClass="com.BigFontLegendItem"/>


<?xml version="1.0"?>
<!-- Simple example to demonstrate the LineChart and AreaChart controls. -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init()" >
	
	<fx:Script>
		<![CDATA[
			import mx.charts.series.LineSeries;
			import mx.collections.ArrayCollection;
			import mx.utils.ColorUtil;
			
			private var colorutil:ColorUtil ;
			[Bindable]
			private var expensesAC:ArrayCollection = new ArrayCollection( [
				{ Month: "Jan", Profit: 2000, Expenses: 1500, Amount: 450 },
				{ Month: "Feb", Profit: 1000, Expenses: 200, Amount: 600 },
				{ Month: "Mar", Profit: 1500, Expenses: 500, Amount: 300 },
				{ Month: "Apr", Profit: 1800, Expenses: 1200, Amount: 900 },
				{ Month: "May", Profit: 2400, Expenses: 575, Amount: 500 } ]);
			
			private function init():void
			{
				var array:Array = new Array();
				for(var i:int =0;i<3;i++)
				{
					var line:LineSeries = new LineSeries();
					line.setStyle("lineStroke",new SolidColorStroke(new uint("0xf00000"),4));
					line.yField="Profit";
					line.displayName="Profit";
					array.push(line);
					var c:ColorUtil = null;
				}
				
				linechart.series = array;
				linechart.dataProvider = expensesAC;
				linechart.showDataTips=true;
				
			}
			
			
		]]>
	</fx:Script>
	<fx:Style>
		@namespace s "library://ns.adobe.com/flex/spark";
		@namespace mx "library://ns.adobe.com/flex/mx";
		.abc{
			fontFamily:"微软雅黑";
			fontSize:12;
			fontWeight:normal;
			color:green;
		}
		
	</fx:Style>
	
	<fx:Declarations>

		<!-- Define custom Strokes. -->
		<mx:SolidColorStroke id = "s1" color="blue" weight="1" scaleMode="vertical"  pixelHinting="false"/>
		<mx:SolidColorStroke id = "s2" color="red" weight="2"/>
		<mx:SolidColorStroke id = "s3" color="green" weight="2"/>
	</fx:Declarations>
	
	<mx:Panel title="LineChart and AreaChart Controls Example" 
			  height="100%" width="100%" layout="horizontal">
		
		<mx:LineChart id="linechart" height="100%" width="45%"
					  paddingLeft="5" paddingRight="5" 
					  showDataTips="true" dataProvider="{expensesAC}">
			<!--
			<mx:horizontalAxis>
				<mx:CategoryAxis categoryField="Month"/>
			</mx:horizontalAxis>-->
			
			<mx:series>
				<mx:LineSeries yField="Profit"  displayName="Profit" lineStroke="{s1}"/>
				<mx:LineSeries yField="Expenses" displayName="Expenses" lineStroke="{s2}"/>
				<mx:LineSeries yField="Amount"  displayName="Amount" lineStroke="{s3}"/>
			</mx:series>
		</mx:LineChart>
		
		<mx:Legend dataProvider="{linechart}" legendItemClass="LegendItemImpl"/>
		
	</mx:Panel>
</s:Application>

package
{
	import mx.charts.LegendItem;

	public class LegendItemImpl extends LegendItem
	{
		public function LegendItemImpl()
		{
			super();
			this.styleName= "abc";
		}
	}
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当 `display:flex` 容器的子元素超出容的宽度时,子元素会自动换行并重新排列。在这种情况下,您可以使用以下 CSS 属性来修改子元素的样式: 1. `flex-wrap` 属性可以控制子元素的换行方式默认情况下,`flex-wrap` 属性的值为 `nowrap`,表示子元素不换行。如果将 `flex-wrap` 设置为 `wrap`,则子元素会在容器宽度不足时换行。 2. `justify-content` 属性可以控制子元素在主轴方向上的对齐方式。默认情况下,子元素会在主轴方向上平均分布。如果您希望子元素向左对齐,可以将 `justify-content` 设置为 `flex-start`;如果您希望子元素向右对齐,可以将 `justify-content` 设置为 `flex-end`。 3. `align-items` 属性可以控制子元素在交叉轴方向上的对齐方式。默认情况下,子元素会在交叉轴方向上居对齐。如果您希望子元素向上对齐,可以将 `align-items` 设置为 `flex-start`;如果您希望子元素向下对齐,可以将 `align-items` 设置为 `flex-end`。 4. `flex-basis` 属性可以控制子元素在其所在行或列占据的空间大小。默认情况下,子元素会占据相等的空间大小。如果您希望某个子元素占据更多的空间,可以将其 `flex-basis` 属性设置为一个较大的值。如果您希望某个子元素占据更少的空间,可以将其 `flex-basis` 属性设置为一个较小的值。 5. `flex-grow` 和 `flex-shrink` 属性可以控制子元素在空间不足时的增长和缩小比例。默认情况下,子元素的 `flex-grow` 和 `flex-shrink` 属性的值均为 1,表示它们会平均增长和缩小。如果您希望某个子元素在空间不足时优先增长,可以将其 `flex-grow` 属性设置为一个较大的值;如果您希望某个子元素在空间不足时优先缩小,可以将其 `flex-shrink` 属性设置为一个较大的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值