【发布时间】:2011-11-11 04:06:58
【问题描述】:
我正在尝试为 Android 编写语法荧光笔。在单独的AsyncTask 线程中运行的突出显示算法本身运行良好,并返回具有所有必要格式的SpannableString。
但是,每当我使用editText.setText(mySpannableString, BufferType.SPANNABLE) 显示突出显示的文本时,EditText 就会滚动回到开头并选择文本的开头。
显然,这意味着用户不能在语法高亮处理文本时继续输入。我怎样才能阻止这个?有什么方法可以在不滚动 EditText 的情况下更新文本?下面是代码大纲:
public class SyntaxHighlighter extends Activity {
private EditText textSource;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.editor);
textSource = (EditText) findViewById(R.id.codeSource);
// Syntax Highlighter loaded text
new XMLHighlighter().execute(textSource.getText().toString());
}
// Runs on Asyncronous Task
private class XMLHighlighter extends AsyncTask<String, Void, SpannableString> {
protected SpannableString doInBackground(String... params) {
return XMLProcessor.HighlightXML(params[0]);
}
protected void onPostExecute(SpannableString HighlightedString) {
textSource.setText(HighlightedString, BufferType.SPANNABLE);
}
}
}
【问题讨论】:
标签: android syntax scroll android-edittext highlighting