Как мы определяем диапазон между минимальным и максимальным пользовательским значением, таким как 85 и 110 для EditText в android - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть требование ограничить редактирование текста, чтобы тип ввода был числом. Мне нужно только принять значение> = 85 и значение <= 110. пожалуйста помоги. Я ищу много, но многие люди дают решение от значения 1 до некоторого предела. </p>

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Я имею в виду этот ответ: Есть ли способ определить минимальное и максимальное значение для EditText в Android?

Лучшее решение, как также уже ответил Jaimil InputFilter. Но в дополнение к его ответу вы должны переопределить filter() метод в своем пользовательском классе. Примерно так:

package com.test;

import android.text.InputFilter;
import android.text.Spanned;

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 et = (EditText) findViewById(R.id.myEditText);
et.setFilters(new InputFilter[]{ new InputFilterMinMax("85", "1")});

E альт!

0 голосов
/ 18 апреля 2020

Пожалуйста, сделайте один класс подобным этому.

class FilterInput:InputFilter {
  private val min:Int = 0
  private val max:Int = 0
  constructor(min:Int, max:Int) {
    this.min = min
    this.max = max
  }
  constructor(min:String, max:String) {
    this.min = Integer.parseInt(min)
    this.max = Integer.parseInt(max)
  }

}

теперь вы можете использовать этот класс в вашем пользовательском интерфейсе (Activity / Fragment) ..

etInput.filters = arrayOf<InputFilter>(FilterInput("85", "110"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...