Решение: Появились две вещи.
Во-первых : Как я уже проверял ваш вопрос, если вы задали EditText
как android:inputType="number"
тогда ведет себя именно так, как вы хотите.Если вы вставите буквенно-цифровую строку, то она показывает только номер.Это не показывает алфавитов или каких-либо специальных символов вообще.Это было проверено на моем устройстве Android 7.1.1 (API25)
.
Во-вторых : Если вы все еще хотите использовать обходной путь, который соответствует вашим потребностям, вы можете использовать TextWatcher
:
Шаг 1: Создайте глобальный объект EditText
, в который вы вставите String
, и инициализируйте его:
EditText editText;
, затем в onCreate()
:
editText = findViewById(R.id.your_editText);
Step2: Добавьте TextWatcher
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
try {
CharSequence txt = clipboard.getPrimaryClip().getItemAt(0).getText();
String str = getOnlyNumbers(txt.toString());
editText.setText(str);
} catch (Exception e) {
return;
}
}
});
Step3: Добавьте приведенный ниже метод в своем классе, чтобы спасти только числа:
public String getOnlyNumbers(String str) {
str = str.replaceAll("[^\\d.]", "");
return str;
}
Надеюсь, это поможет.Если у вас есть какие-либо сомнения, пожалуйста, прокомментируйте ниже.