有没有什么办法来定义Android的一个最小和最大价值的EditText?有没有什么、最小、定义、价值

2023-09-12 00:44:51 作者:顾北辰。

我要定义一个最小和最大的价值一个EditText。例如,如果任何人试图进入一个月份值必须是1-12之间,你知道的。我想限制该值

I want to define a min and max value for an edittext. For example if any person try to enter a month value it must be between 1-12 as you know. I want to limit this value.

我可以用TextWatcher做,但我想学习,有没有办法做到这一点在布局文件或者等除外TextWatcher?

I can do it by using TextWatcher but I want to learn, is there any way to do it in layout file or etc except TextWatcher?

编辑: 我不希望限制字符数。我想限制的值。举例来说,如果我限制了一个月的EditTextW¯¯人物,当我输入12它会接受它,但如果我输入22它不能接受它,而我进入。

I don't want to limit character count. I want to limit the value. For example, if I limit month edittext w characters when I enter 12 it will accept it but if I enter 22 it mustn't accept it while I am entering.

谢谢大家。 问候。

推荐答案

首先使这个类:

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;
    }
}

,然后使用这个从你的活动:

Then use this from your Activity :

EditText et = (EditText) findViewById(R.id.myEditText);
et.setFilters(new InputFilter[]{ new InputFilterMinMax("1", "12")});

这将允许用户输入从1值12仅

编辑:

设置您的EditText与安卓inputType =号

Set your edittext with android:inputType="number".

感谢。