我在一个包含9个edittext和一个自定义键盘的应用程序上工作完美,但是当我向我的editext添加一个textWatcher时,数字将被反转,例如,如果我在edittext1中插入值14它将是41我也想要如果我在9中的edittext中有一个值我不能插入另一个editext剩余的代码,如果它的工作为0 .... 9例如我在edittext1中插入值1并且我想插入值14 in edittext2我不能因为1重复。如果你请我帮助我,我在开发android中是负责任的,这里是我使用的代码
public void editTextWatcher(final EditText edt) {
edt.addTextChangedListener(new TextWatcher() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@SuppressLint("ResourceAsColor")
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void afterTextChanged(Editable s) {
edt.removeTextChangedListener(this);
edt.setText("");
edt.addTextChangedListener(this);
ArrayList<String> texts = new ArrayList<String>();
texts.add(et1.getText().toString());
texts.add(et2.getText().toString());
texts.add(et3.getText().toString());
texts.add(et4.getText().toString());
texts.add(et5.getText().toString());
texts.add(et6.getText().toString());
texts.add(et7.getText().toString());
texts.add(et8.getText().toString());
texts.add(et9.getText().toString());
for (String text : texts) {
if (s.toString().equals(text)) {
if (s.toString().equals("")) {
return;
}
AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f);
animation1.setDuration(70);
animation1.setStartOffset(500);
animation1.setFillAfter(true);
edt.startAnimation(animation1);
edt.removeTextChangedListener(this);
edt.addTextChangedListener(this);
afficheerr1();
return;
} else {
}
}
edt.removeTextChangedListener(this);
edt.setText(s.toString());
edt.addTextChangedListener(this);
}
});
}
et le code dans onCreate
editTextWatcher(et1);
editTextWatcher(et2);
editTextWatcher(et3);
editTextWatcher(et4);
editTextWatcher(et5);
editTextWatcher(et6);
editTextWatcher(et7);
editTextWatcher(et8);
editTextWatcher(et9);
答案 0 :(得分:0)
我相信你可以删除这些行:
edt.removeTextChangedListener(this);
edt.setText("");
edt.addTextChangedListener(this);
这里的问题是你要删除文本并将光标跳转到字符串的开头。
或强>
另一个选项是在设置文本后将光标设置为结束:
...
edt.removeTextChangedListener(this);
edt.setText(s.toString());
edt.setSelection(et.getText().length()); // move cursor to the end of string
edt.addTextChangedListener(this);
...
不过,目前还不清楚这应该做什么以及你在问什么。