wangzhibo
4 天以前 ae6f40460dcd56af6c5f60ba52c883854c3bac55
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package nodomain.freeyourgadget.gadgetbridge.util.preferences;
 
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.widget.EditText;
 
import nodomain.freeyourgadget.gadgetbridge.R;
 
public class MinMaxTextWatcher implements TextWatcher {
    private final EditText editText;
    private final int min;
    private final int max;
    private final boolean allowEmpty;
 
    public MinMaxTextWatcher(final EditText editText, final int min, final int max) {
        this(editText, min, max, false);
    }
 
    public MinMaxTextWatcher(final EditText editText, final int min, final int max, final boolean allowEmpty) {
        this.editText = editText;
        this.min = min;
        this.max = max;
        this.allowEmpty = allowEmpty;
    }
 
    @Override
    public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) {
    }
 
    @Override
    public void onTextChanged(final CharSequence s, final int start, final int before, final int count) {
    }
 
    @Override
    public void afterTextChanged(final Editable editable) {
        if (TextUtils.isEmpty(editable.toString()) && allowEmpty) {
            editText.getRootView().findViewById(android.R.id.button1)
                    .setEnabled(true);
            return;
        }
 
        try {
            final int val = Integer.parseInt(editable.toString());
            editText.getRootView().findViewById(android.R.id.button1)
                    .setEnabled(val >= min && val <= max);
            if (val < min) {
                editText.setError(editText.getContext().getString(R.string.min_val, min));
            } else if (val > max) {
                editText.setError(editText.getContext().getString(R.string.max_val, max));
            } else {
                editText.setError(null);
            }
        } catch (final NumberFormatException e) {
            editText.getRootView().findViewById(android.R.id.button1)
                    .setEnabled(false);
        }
    }
}