我有Android的源代码编辑器,我有一个行号计数器,位于主EditText的左侧,里面有源代码。
我有以下用于更新行号文本视图的功能:
String lineDelimiter = "\n";
public void updateLineNumbers(){
int lines = textBox.getLineCount();
lineNums.setText(1 + lineDelimiter);
for(int i = 2; i < lines; i++){
lineNums.append(i + lineDelimiter);
}
}
所有这一切都很好,但问题是当你有一个说200多行的文档时,你会发现添加行时会有一点延迟。这是因为Android TextView的setText / append方法有点慢吗?或者它是导致延迟的连接?
我还做了一个类似的功能,当用户添加行号时附加行号,反之亦然,而不是像上面的函数那样清除TextView并再次添加每个行号。但是当用户添加/删除行时,此功能仍然滞后于应用程序。
我怎么能阻止这个?我无法想到要做什么,它会让我感到压力,因为它使我的应用程序滞后并使其无法用于大型文件! :(
感谢您的期待!
解
我找到了一种快速行号的方法,即使用自定义TextView和onDraw(Canvas画布)覆盖并以这种方式绘制它们,从而产生无滞后的行号:)。
答案 0 :(得分:1)
这是导致Android TextView的setText / append方法有点慢吗?或者是导致延迟的连接?
使用Traceview并查找。
关闭袖口,我想在append()
上多次调用TextView
比在append()
上多次调用StringBuilder
要慢得多},然后在setText()
上调用TextView
一次。
我该怎么办?
不要那样处理行号。例如,将TextView
放在EditText
的左侧,并将您的行号放在TextView
中,每行一个。