如何在flex spark中加粗字母之间的符号

时间:2013-06-10 20:20:32

标签: flex flex4 flex3

我有一个像这样的代码

var str:string = "GeoCode: 3";

在这段代码中,我希望“:”以粗体显示。

我该怎么做呢,这应该在spark

中完成

请帮帮我

谢谢!

2 个答案:

答案 0 :(得分:2)

最简单的方法是使用TextFlowUtil.importFromString()并将生成的TextFlow对象分配给RichText组件,如下所示:

<s:RichText id="textDisplay"/>

textDisplay.textFlow = 
   TextFlowUtil.importFromString('GeoCode<span fontWeight="bold">:</span> 3');

如果您希望保持原始字符串不变,可以替换它们以添加范围:

var str:String = "GeoCode: 3";
str = str.replace(/:/, '<span fontWeight="bold">:</span>');
textDisplay.textFlow = TextFlowUtil.importFromString(str);

答案 1 :(得分:0)

我会做这样的事情:

enter image description here

组件的text属性通过“:”符号分割为多个部分。然后将每个部分添加到像Label一样的HGroup中。冒号加粗。

//应用

<?xml version="1.0" encoding="utf-8"?>
<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" 
           minWidth="955" minHeight="600" xmlns:com="com.*">

<s:VGroup left="20" top="20">
    <com:GeoLabel text="GeoCode: 3"/>
    <com:GeoLabel text="GeoCode: 5: Some Info: 123"/>
</s:VGroup>
</s:Application>

// GeoLabel组件

<?xml version="1.0" encoding="utf-8"?>
<s:HGroup xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" 
      width="120" height="25" gap="0">
<fx:Script>
    <![CDATA[
        import spark.components.Label;
        private var _text:String;

        public function get text():String
        {
            return _text;
        }

        public function set text(value:String):void
        {
            _text = value;

            createMembers();
        }

        private function insertLabel(str:String, bold:Boolean):void
        {
            var la:Label = new Label();
            la.text = str;

            if (bold)
                la.setStyle("fontWeight", "bold");

            this.addElement(la);
        }

        private function createMembers():void
        {
            this.removeAllElements();

            var arr:Array = text.split(":");

            for (var i:int = 0; i < arr.length; i++)
            {
                if (i != 0)
                    insertLabel(":", true);
                insertLabel(arr[i], false);
            }
        }
    ]]>
</fx:Script>
</s:HGroup>