有没有什么办法来定义Android的一个最小和最大价值的EditText? [英] Is there any way to define a min and max value for edittext in android?

查看:508
本文介绍了有没有什么办法来定义Android的一个最小和最大价值的EditText?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要定义一个最小和最大的价值一个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".

感谢。

这篇关于有没有什么办法来定义Android的一个最小和最大价值的EditText?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆