在Flex 4中更改TextArea的文本选择颜色以进行编程选择

时间:2013-12-18 09:27:46

标签: flex

我正在使用Flex 4 spark TextArea,我实现了一个搜索字段。我使用以下代码突出显示TextArea中的搜索文本:

private function findAndHighlightText():void
    {
        var text:String = findTextInput.text;
        var beginIndex:int = scriptSourceTextArea.text.indexOf( text, m_lastFoundIndex );
        if (beginIndex == -1 && m_lastFoundIndex > 0)
        {
            // We are at the end, search back from the begin
            Alert.show( resourceManager.getString( 'groovyresources', 'search.at.end' ),
                        resourceManager.getString( 'groovyresources', 'find' ) );
            m_lastFoundIndex = 0;
            beginIndex = scriptSourceTextArea.text.indexOf( text, m_lastFoundIndex );
        }
        if (beginIndex != -1)
        {
            var endIndex:int = beginIndex + text.length;
            m_lastFoundIndex = endIndex;
            scriptSourceTextArea.selectRange( beginIndex, endIndex );
            scriptSourceTextArea.scrollToRange( beginIndex );
        }
        else
        {
            Alert.show( resourceManager.getString( 'groovyresources', 'search.not.found', [text] ),
                        resourceManager.getString( 'groovyresources', 'find' ) );
        }
    }

最重要的是TextArea上的方法selectRange。这突出了TextArea中的文本,但我想使用不同的颜色。

我可以通过应用CSS样式focused-text-selection-color更改手动选择的高亮颜色(请参阅http://www.kirupa.com/forum/showthread.php?354479-Change-highlight-color-for-text-fields),但这样做会更改程序选择的颜色。

更新:编程选择的颜色不会改变,因为TextArea当时没有焦点。所以我需要找到未聚焦的选择颜色CSS名称。

1 个答案:

答案 0 :(得分:1)

有两种样式会影响所选文本在Flex中的突出显示方式:

    .scriptSourceTextArea {
        focused-text-selection-color: #788ec5;
        unfocused-text-selection-color: #7e94cb;
    }

一个用于聚焦,另一个用于文本区域没有焦点。