簡體   English   中英

有沒有辦法為 EditText 定義最小值和最大值。 EG 20 - 200(不是從 1 開始)

[英]Is there a way to define a min and max value for a EditText. EG 20 - 200 (not starting at 1)

我到處都能看到這個例子,我希望找到一種方法來定義EditText的最小值和最大值。 我有點理解它的作用,但我發現如果最小值大於 10,它就會中斷。有什么方法可以更改此代碼,以便最小值可以是任何數字嗎? 有沒有更簡單的方法來執行此操作,因為它對於一項簡單的任務來說似乎過於復雜了?

 ClassName.setFilters(new InputFilter[]{ new InputFilterMinMax("1", "200")});
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;
    }

會有一些事件,這里我正在處理按鈕點擊事件

@Override
public void onClick(View view) {

String guessSize=editText.getText().toString();
if(Integer.parseInt(guessSize)<=20 || Integer.parseInt(guessSize)>=200)
{
    //Anything you want
    Toast.makeText(MainActivity.this, "No wroking", Toast.LENGTH_SHORT).show();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM