我在EditText
中遇到大量跨度的性能问题。其实我是一个很大的源代码。要突出显示我设置了不同颜色和不同位置的跨度。假设我们有以下内容:
public static void main(String[] args)
我的代码将输出以下标记(这些只是示例中的数字,它们可能是错误的):
("Keyword", 0, 5) -> public
("Keyword", 7, 12) -> static
("Keyword", 14, 17) -> void
("Type", 24, 29) -> String
然后我设置了跨度:
for(Lexer.Token t: tokens) {
text.setSpan(new ForegroundColorSpan(colorizer.getColor(t)), t.start, t.end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
}
现在,假设我在开头添加了char a
:
a public static void main(String[] args)
所发生的是所有跨度都需要通过添加2来重新计算。问题是如果我有一个巨大的文件和大量的跨度,计算速度很慢。
我的想法是仅将语法高亮应用于代码的可见部分,但这样做有点麻烦,我正在寻找更好,更简单的解决方案。有人为此提供了一个很好的解决方案吗?
提前谢谢