Я хочу установить минимальное значение в EditText, чтобы пользователь не мог ввести число меньше 50.

<EditText android:id="@+id/number"
                android:layout_width="150.0dip"
                android:hint="(min 50)"
                android:layout_height="wrap_content"
                android:inputType="number" />
1
Fodis 22 Окт 2017 в 14:26

3 ответа

Лучший ответ

Тестирование при нажатии кнопки.

Вы помещаете это в слушателя кнопки:

if (Integer.valueOf(editText.getText().toString()) < 50) {
    // Do what you want
}
0
Sergio 22 Окт 2017 в 11:38

Вы должны использовать класс InputFilter

public class InputFilterMinMax implements InputFilter {

private int min, max;

public InputFilterMinMax(int min, int max) {
    this.min = min;
    this.max = max;
}

public InputFilterMinMax(String min, String max) {
    this.min = Integer.parseInt(min);
    this.max = Integer.parseInt(max);
}

@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
    try {
        int input = Integer.parseInt(dest.toString() + source.toString());
        if (isInRange(min, max, input))
            return null;
    } catch (NumberFormatException nfe) {
    }
    return "";
}

private boolean isInRange(int a, int b, int c) {
    return b > a ? c >= a && c <= b : c >= b && c <= a;
}

}

Вы должны получить ссылку на ваш класс редактирования текста в вашей деятельности / фрагмент

EditText yourEditext = (EditText) findViewById(R.id.editText);

InputFilter[] editFilters = yourEditext.getFilters();
                InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
                System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
                newFilters[editFilters.length] = new InputFilterMinMax(0, 59);
                yourEditext.setFilters(newFilters);
0
Aris Panayiotou 22 Окт 2017 в 13:26

Я бы предложил вам использовать TextWatcher. Вот простые шаги для подражания:

ШАГ 1. Принесите EditText (или View), который вы хотите отслеживать, в код Java

ШАГ 2. Внедрите TextWatcher в свою деятельность или создайте отдельный класс, который отвечает за управление изменениями текста (реализация аналогична другим слушателям, например, OnClickListener)

ШАГ 3 - Реализация всех методов внутри TextWatcher (методы интерфейса @Override)

ШАГ 4 - Используйте метод addTextChangedListener в представлении (EditText), чтобы связать его с TextWatcher (зарегистрировать представление)

ШАГ 5 - Используйте один из доступных методов для проверки

После реализации будет 3 метода, которые мы должны переопределить из интерфейса:

void beforeTextChanged(CharSequence c, int i, int i2, int i3) {}
void onTextChanged(CharSequence c, int i, int i2, int i3) {} 
void afterTextChanged(Editable e) {}

Все эти три метода вызываются последовательно при любом изменении (например, при наборе или удалении буквы). Достаточно использовать только один из них, и предпочтительно использовать метод afterTextChanged. Параметр EDITABLE - это просто текст, который у нас есть внутри нашего EditText в данный момент.

0
Serj Ardovic 22 Окт 2017 в 11:49