gpt4 book ai didi

android - Android textview 中的 Html Styling 出错

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:33 25 4
gpt4 key购买 nike

我正在选择 TextView 的一部分并单击“突出显示”按钮,我将选择的开始和结束索引发送到数据库。然后我从 db 加载所有开始和结束索引并更改它们之间的文本颜色。

问题是在一两次之后,应用程序正在更改不在选择中的文本的颜色..而选择的部分保持不变。

我的代码:

  1. 当用户选择并按下高亮按钮时

    int i=contentText.getSelectionStart();
    int j=contentText.getSelectionEnd();

    db.insertHiglightIndex(String.valueOf(i),String.valueOf(j));
    setHighlightedText();
  2. setHighlightedText() 方法..

    String fullText=contentText.getText().toString();
    for(int i=0; i<db.getAllStartIndex().size();i++){
    String a=fullText.substring(Integer.parseInt(db.getAllStartIndex().get(i)),Integer.parseInt(db.getAllEndIndex().get(i)));
    fullText = fullText.replace(a, "<font color='red'>"+a+"</font>");
    }
    contentText.setText(Html.fromHtml(fullText), TextView.BufferType.SPANNABLE);

我的屏幕截图。

选择:

结果:

很明显选择的区域是从“加里克”“巴特”,结果是从“实体” “2012”

我不明白为什么会这样。我认为这个 <font color='red'>"+a+"</font> 有问题行。

谢谢

最佳答案

索引错误因为已经添加了<font color='red'>一开始,所以在第二次这个标签也算作字符串的一部分,所以我建议创建一个新的临时字符串,将相同的文本分配给字符串,但在替换它持有的先前字体标签之后。使用此语法删除以前的 font来自 originalString 的标签

String tempString = originalString.replaceAll("[<](/)?font[^>]*[>]", "");

在那之后只使用 tempString .这意味着再次添加之前的所有 font标记你必须 tempString并设置该文本。

下次再做同样的事情,首先删除所有字体标签,然后再次将它们全部添加回 tempString以及使用您当前使用的相同循环的当前选择。

关于android - Android textview 中的 Html Styling 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36887697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com