Попробуйте это, я понял это, так как вы делаете onKeyListener
возврат по умолчанию является false
, так что если это false
и он показывает число, а затем изменить его true
и не будет;)
etpew.setOnKeyListener(new EditText.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_0 ||
keyCode==KeyEvent.KEYCODE_1 ||
keyCode==KeyEvent.KEYCODE_2) {
Toast.makeText(MainActivity.this, "NO!", Toast.LENGTH_SHORT).show();
return true;
}else {
return false;
}
}
});
Как View.OnKeyListener
Documentation says,
Возвращает Правда, если слушатель потребил событие, ложь в противном случае.
Кроме того, вы можете сделать это, добавив это в EditText
<EditText android:inputType="text" android:digits="3,4,5,6,7,8,9,*,qwertzuiopasdfghjklyxcvbnm" />
Также вы можете попробовать этот метод, но это лучше первый один ... вы можете использовать InputFilter
следующим образом:
etpew.setFilters(new InputFilter[]{
new InputFilter() {
public CharSequence filter(CharSequence src, int start,
int end, Spanned dst, int dstart, int dend) {
if (src.toString().matches("[a-zA-Z3-9 ]*")) //I've removed the 0,1,2 but if you want to control more stuff just add on this method.
{
return src;
}
return "";
}
}
});
Почему не просто 'return! (KeyCode == KeyEvent.KEYCODE_0 || keyCode == KeyEvent.KEYCODE_1 || keyCode == KeyEvent.KEYCODE_2)'? Вся ваша конструкция if-else - это просто запутанный способ сказать «нет». –
, если вы хотите ограничить некоторые символы, вы можете сделать это на textchangelistner aftertextchange event – Pavan
@ Jean-FrançoisCorbett Я написал это, но, возможно, он хочет что-то добавить в ответ на возвращение, поэтому я положил его так же, как и он ... и это работает меня. –