回答
我的猜測是檢查字符在TextWatcher如下:
EditText editText = (EditText)findViewById(R.id.editText);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
// Get cursor position
int cursorPosition = editText.getSelectionStart();
// Check if the previous character is "," and move your cursor
if (s.charAt(cursorPosition - 1) == ',')
editText.setSelection(cursorPosition - 2);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
東西像這樣應該可以工作:
全局變量:
private String lastText = "";
private int countOfCommas= 0;
private EditText editText;
代碼:
editText = ((EditText) findViewById(R.id.editText));
updateText("Amir,Mahdy");
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
int new_countOfCommas = s.toString().length() - s.toString().replace(",", "").length();
if(new_countOfCommas < countOfCommas) {
int cursor_pos = editText.getSelectionStart();
editText.setText(lastText);
if(cursor_pos <= lastText.length()) {
editText.setSelection(cursor_pos);
}
} else {
countOfCommas = s.toString().length() - s.toString().replace(",", "").length();
lastText = s.toString();
}
}
});
功能以編程方式設置文本:
void updateText(String str) {
countOfCommas = str.length() - str.replace(",", "").length();
lastText = str;
editText.setText(str);
}
嗨@ByteHamster,謝謝你的回答:)在這段代碼中有兩個錯誤,第一個是我不能再添加「,」我自己了,第二個是,它似乎不能在批處理文本輸入上工作,因爲例如:「Amir」作爲複製或添加編程的文本!實際上我想在芯片視圖(MultiAutoCompleteTextView)中使用它,並且不能將建議的字符串添加到我的編輯文本中,那麼修復是什麼? – 2015-04-05 22:09:13
好的,我更新了我的答案。你介意再試一次嗎? :) – ByteHamster 2015-04-05 22:25:27
嗨,我面臨着同樣的問題,防止用戶刪除特殊字符,在我的情況十進制字符。這是我如何做到的。 在strings.xml
補充一點:
<item type="id" name="SEPARATOR" />
比EditText
addTextChangedListener
和方法beforeTextChanged
補充一點:
int position = editText.getText().toString().indexOf(your_special_character);
editTrxt.setTag(R.id.SEPARATOR, position);
比afterTextChanged
只返回後面那個字是這樣的:
String text = editText.getText().toString();
try {
if (!text.contains(your_special_character +"")){
int position = (int)editText.getTag(R.id.SEPARATOR);
text = new StringBuilder(text).insert(position, separator).toString();
}
}catch (Exception ignored){
}
- 1. 在android中使用edittext時刪除特殊字符;
- 2. 防止刪除文本框中的特殊字符
- 3. 如何防止刪除EditText中的spannable
- 4. php:防止escapeshellcmd()移除特殊字符
- 5. 如何在PHP中刪除字符串中的特殊字符?
- 6. 防止UITextField中的特殊字符
- 7. 如何從android中的XML提要中刪除特殊字符?
- 8. 如何阻止androids editText中的特殊字符?沒有ANDROID:DIGITS
- 9. 如何刪除特殊字符在python
- 10. 刪除字典中的特殊字符
- 11. 在ASP中刪除特殊字符
- 12. 如何刪除特殊字符的行?
- 13. 如何防止在Python中自動轉義特殊字符
- 14. Java - 如何刪除字符串數組中的特殊字符?
- 15. R如何刪除字符串中的特殊字符?
- 16. 如何刪除PHP字符串中的特殊字符?
- 17. 刪除SQL中的特殊字符
- 18. 刪除NSString中的特殊字符
- 19. 刪除Python中的特殊字符
- 20. 刪除Excel中的特殊字符
- 21. 刪除XmlCompiledTransform中的特殊字符
- 22. 如何使用vb.net防止datagridview中的特殊字符
- 23. 在java中刪除字符串中的特殊字符?
- 24. 在Python中刪除字符串中的特殊字符
- 25. 在.htaccess中刪除查詢字符串中的特殊字符
- 26. 如何刪除特殊字符?
- 27. 如何刪除「Ctrl + Backspace」特殊字符?
- 28. 如何刪除所有特殊字符
- 29. 如何從字符串中刪除特殊字符
- 30. 如何從字符串中刪除特殊字符?
嗨謝謝你回答@Guillaume LEFEVRE我檢查並告訴喲你怎麼了! – 2015-04-05 21:37:41
唯一的問題是,如果用戶正在鍵入並按下「,」,那麼他們可能會繼續向後跳。這可以通過偵聽KeyEvent.KEYCODE_BACK幷包含一個布爾開關來檢查用戶是否正在刪除。 – PPartisan 2015-04-05 21:38:06
它沒有工作! 「,」不斷刪除!並且在減去getselectionstart之前的某些情況下變爲-1! – 2015-04-05 21:44:42