(转:http://www.apkbus.com/android-5257-1-14.html)
//给EditText增加监听器
contentEditText.addTextChangedListener(new TextWatcher() {
int l=0;////////记录字符串被删除字符之前,字符串的长度
int location=0;//记录光标的位置
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
l=s.length();
location=contentEditText.getSelectionStart();
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if (l>s.toString().length()) {
gyf.function.face_analysis faceAnalysis=new gyf.function.face_analysis(releaseComment.this);
SpannableStringBuilder sBuilder=faceAnalysis.getSpannableStringBuilder(s.toString());
//eText.setText(sBuilder);
//eText.setText("");
contentEditText.setText(sBuilder);
Editable etable=contentEditText.getText();
Selection.setSelection(etable, location);
//Toast.makeText(releaseComment.this, "11111", Toast.LENGTH_SHORT).show();
}
}
});
final static int getSelectionEnd(CharSequence text)Return the offset of the selection edge or cursor, or -1 if there is no selection or cursor.final static int getSelectionStart(CharSequence text)Return the offset of the selection anchor or cursor, or -1 if there is no selection or cursor.final static void removeSelection(Spannable text)Remove the selection or cursor, if any, from the text.final static void selectAll(Spannable text)Select the entire text.final static void setSelection(Spannable text, int index)Move the cursor to offset index.static void setSelection(Spannable text, int start, int stop)Set the selection anchor to start and the selection edge to stop.
Android123提示大家,从上面的参数来看,可以发现Spannable类型,常规我们的EditText中的编辑中Editable直接实现Spannable接口,所以我们可以通过下面的方法来设置选择:
- Editable ea= etEdit.getText(); //etEdit为EditText
- Selection.setSelection(ea, ea.length()-1); // Android开发网提示这里ea的长度必须大于1。否则会有异常发生