如何检查突出显示文本的 if else 条件?

Posted

技术标签:

【中文标题】如何检查突出显示文本的 if else 条件?【英文标题】:How to check for if else condition for highlighted text? 【发布时间】:2019-04-06 06:53:39 【问题描述】:

我想实现IfElse 条件来检查所选文本是否突出显示。我可以突出显示文本,但不知道要再次删除突出显示文本的if() 条件。我搜索了很多,但没有得到明确的答案。这是我的代码:

private void highlightTextCondition() 
    int selectionStart = bodyText.getSelectionStart();
    int selectionEnd = bodyText.getSelectionEnd();
    if (selectionStart > selectionEnd) 
        int temp = selectionEnd;
        selectionEnd = selectionStart;
        selectionStart = temp;
    
    if (selectionEnd > selectionStart) 
        Spannable str = bodyText.getText();
        boolean exists = false;


        for (int i = 0; i < str.length(); i++) 
            if (**want this statement here for highlight texted**) 
                str.removeSpan(*****);
                exists = false;
            
        

        if (!exists) 
            str.setSpan(new BackgroundColorSpan(Color.YELLOW), selectionStart, selectionEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            exists = true;
        

        bodyText.setSelection(selectionStart, selectionEnd);
    

【问题讨论】:

【参考方案1】:

试试这个,但我不确定如何只删除选定的文本突出显示颜色

 if (selectionEnd > selectionStart) 
        Spannable str = bodyText.getText();
        boolean exists = false;

        for (CharacterStyle span : str.getSpans(selectionStart, selectionEnd, CharacterStyle.class)) 
            if (span instanceof BackgroundColorSpan)
                str.removeSpan(span);
            exists = true;
        
        if (!exists) 
            str.setSpan(new BackgroundColorSpan(Color.YELLOW), selectionStart, selectionEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        

        bodyText.setSelection(selectionStart, selectionEnd);
    

【讨论】:

感谢您的回答。这对我有用,但唯一的问题是,当我突出显示整行然后取消突出显示突出显示的行文本的一部分时,它会取消突出显示整个文本行。

以上是关于如何检查突出显示文本的 if else 条件?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Vim 拼写检查中的突出显示样式?

if 条件中的语法错误。不等号突出显示[重复]

如何从 wxPython 中的文本控件传递突出显示的文本

在选择文本选项中突出显示特定文本的颜色

WPF TextBlock 根据搜索条件突出显示某些部分

如何在文本突出显示期间保留语法突出显示