我在文本区域中选择了粗体,斜体等文本,但在富文本上添加文本时,我无法保持粗体,斜体属性。
答案 0 :(得分: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>
我希望这对你有所帮助。