安卓 EditText 和大量文本

4

我在开发一些能够编辑文本文件的应用程序。但是我在EditText控件上遇到了一个严重的问题。目前,我加载了一个大小为17KB的文本文件。我觉得这并不是特别多的文本量。当我滚动文本时,一切都很顺利。但是当我聚焦于EditText并开始进行编辑时,就会出现4-5秒的延迟/冻结。离开EditText时也会有同样的情况。我使用的API级别是8,并且以下是我的edittext布局:

    <EditText android:id="@+id/journal_text"
                android:layout_width="0dip"
                android:layout_height="fill_parent"
                android:gravity="top|left"
                android:layout_weight="1"
                android:lines="20"
                android:inputType="textMultiLine|textNoSuggestions"
                android:scrollbars="vertical"
                android:fadeScrollbars="false"
                >

                <requestFocus />

            </EditText>

这是我的Java代码:

    edit = (EditText)view.findViewById(R.id.journal_text);
    edit.setText(readFile(path));   

我从GooglePlay下载了Jota文本编辑器应用,它能很好地处理大型文本数据...请问有人可以帮我解决这个问题吗?或者指导我如何解决这个问题吗? 谢谢 Anton


EditText 上有任何监听器吗?只是想排除本地小部件的性能问题。 - salezica
除了监听器,更改键盘是否有影响?输入法可能会处理编辑器文本的单词频率。 - Gabe Sechan
不,我的editText没有任何监听器。我正在使用市场上的HackersKeyboard。当我切换到其他输入法(dpad)时,情况会稍微好一些,但延迟仍然约为3-4秒:( - user1063364
嗯...当我将android:lines="20"更改为android:lines="5"时,性能会迅速提高...但这不是我想要的。我需要几乎全屏的edittext。在平板电脑上,有5行的“记事本”将非常小:( - user1063364
这里定义了一个自定义编辑文本,怎么样?不确定它是否会提高性能:( - Kgrover
谢谢,如果没有其他办法,我会实现自定义EditText...现在我正在尝试避免这样做,因为我还有很多关于应用程序其他部分的工作要做... - user1063364
2个回答

0

自定义EditText并不能解决问题。当其中的文本内容变得太大时,在EditText中进行编辑会变得更慢。尝试使用WebView代替EditText。它可以完美地处理非常大的文本内容。


-1

你需要使用扫描器来读取文本文件。

StringBuilder stringBuilder = new StringBuilder();
Scanner scanner = new Scanner(tempFile).useDelimiter("\\Z");
while (scanner.hasNext()) {
stringBuilder .append(scanner.next());
}

edit.setText(stringBuilder );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接