2

我将文本区域中的选定文本设为粗体、斜体等,但在富文本上添加文本时无法保持粗体、斜体属性。

4

1 回答 1

1

好的,看。让我们一步一步分析我们的问题:

问题:我们有文本,我们需要将初始文本的选定文本更改为粗体;

解决方案

1)取一个选择文本来分隔字符串

2)将单独字符串的样式更改为粗体(或其他样式)

3)收集带有粗体字串的初始非粗体字符串并显示结果:)

我认为有几种方法可以解决这个问题,但我提出以下建议:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="Test">
<s:VGroup>
    <s:RichEditableText id="ret" text="Test Text String for selection" />
    <s:Button id="btnBold" label="Set Bold for Selection" click="btnBold_clickHandler(event)"/>
</s:VGroup>
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
    <![CDATA[
        import flashx.textLayout.conversion.TextConverter;

        protected function btnBold_clickHandler(event:MouseEvent):void
        {
            setBoldForSelectionTex();
        }

        private function setBoldForSelectionTex():void
        {
            var startSelectionPos:int   = 0;
            var endSelectionPos:int     = 0;

            if(ret.selectionActivePosition > ret.selectionAnchorPosition)
            {
                endSelectionPos     = ret.selectionActivePosition;
                startSelectionPos   = ret.selectionAnchorPosition;
            }
            else
            {
                endSelectionPos     = ret.selectionAnchorPosition;
                startSelectionPos   = ret.selectionActivePosition;
            }

            var initialString:String    = ret.text;
            var startString:String      = ret.text.toString().substr(0, startSelectionPos);
            var middleString:String     = ret.text.toString().substr(startSelectionPos, endSelectionPos - startSelectionPos);
            var endString:String        = ret.text.toString().substr(endSelectionPos, initialString.length - endSelectionPos);
            var completeString:String   = startString +"<b>" + middleString + "</b>" + endString;

            ret.textFlow = TextConverter.importToFlow(completeString, TextConverter.TEXT_FIELD_HTML_FORMAT);
        }
    ]]>
</fx:Script>
</s:View>

我希望这对你有帮助。

于 2013-05-03T10:05:51.593 回答