我想在EditText中设置最小值,这样用户就无法输入小于50的数字。
<EditText android:id="@+id/number"
android:layout_width="150.0dip"
android:hint="(min 50)"
android:layout_height="wrap_content"
android:inputType="number" />
答案 0 :(得分:0)
单击按钮时进行测试。
你把它放到按钮的监听器中:
forkJoin
答案 1 :(得分:0)
我建议您使用TextWatcher。以下是简单的步骤:
步骤1 - 将要跟踪的EditText(或View)带入Java代码
第2步 - 在Activity中实现TextWatcher或在负责管理文本更改的句柄上创建一个单独的类(实现类似于其他侦听器s.a. OnClickListener)
第3步 - 实现TextWatcher中的所有方法(@Override接口方法)
步骤4 - 在View(EditText)上使用addTextChangedListener方法将其链接到TextWatcher(注册视图)
第5步 - 使用其中一种可用方法执行验证
实施后,我们必须从界面中覆盖3种方法:
void beforeTextChanged(CharSequence c, int i, int i2, int i3) {}
void onTextChanged(CharSequence c, int i, int i2, int i3) {}
void afterTextChanged(Editable e) {}
所有这三种方法都会在任何更改时被调用(如键入或删除字母)。仅使用其中一个就足够了,并且最好使用afterTextChanged方法。 EDITABLE参数只是我们在EditText中的文本。
答案 2 :(得分:0)
你应该使用 InputFilter 类
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;
}
}
您应该在Activity / Fragment
上获得对Edit Text类的引用EditText yourEditext = (EditText) findViewById(R.id.editText);
InputFilter[] editFilters = yourEditext.getFilters();
InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
newFilters[editFilters.length] = new InputFilterMinMax(0, 59);
yourEditext.setFilters(newFilters);