我在EditText上有一个TextWatcher,在afterTextChanged方法中,我将字符添加到EditText中,然后将光标移动到EditText的末尾,以继续添加文本,但我遇到了问题。
如下所示:
public void afterTextChanged(Editable s) {
if(edittext.getText().length()==2){
// append dot to edittext
edittext.append(".");
// move cursor at end position in EditText
edittext.setSelection(edittext.getText().length());
}
}
在安卓4.0v或更高版本中,光标停留在".“之前,在2.2v中可以正常工作,但在这两个版本中我都无法删除字符。
有谁有同样的问题吗?
Grettings
发布于 2013-05-13 06:05:20
您可以这样做,以避免删除问题...
public class MainActivity extends Activity {
int count=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText edittext=(EditText)findViewById(R.id.editText1);
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable ed) {
// TODO Auto-generated method stub
if(edittext.getText().length()==2 && count < 3){
// append dot to edittext
edittext.append(".");
// move cursor at end position in EditText
edittext.setSelection(edittext.getText().length());
}
count=edittext.getText().length();
}
});
}
发布于 2013-05-13 05:57:39
你的代码看起来没问题...
但是,如果您删除一个字符,文本长度又是== 2,您的代码将自动添加一个'.‘。再次使用char -所以看起来删除是不可能的。
发布于 2018-02-03 02:19:11
new TextWatcher() {
int startChanged,beforeChanged,countChanged;
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
startChanged = start;
beforeChanged = before;
countChanged = count;
}
public void afterTextChanged(Editable s) {
...your code here....
myEditText.setSelection(startChanged+countChanged);
...your code here...
}
}
};
https://stackoverflow.com/questions/16515624
复制