editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
3条答案
按热度按时间guz6ccqo1#
如果你想用编程的方法求解,
TextWatcher
是个不错的选择。内部
onTextChanged()
,检查更改的字符序列是否与您需要的匹配,否则将其替换。z4bn682m2#
你可以这样添加条件
将edittext输入类型设置为
jckbn6z73#
使用regex模式可以处理
-99.99
以及99.99
^[-+]?[0-9]{1,2}.[0-9]{1,2}+$更新2:对于>=-100和<=100,使用以下正则表达式:
^[-+]100|^[-+]?[0-9]{1,2}.[0-9]{1,2}+$
在下面的示例中,检查文本,如果匹配或不匹配,则启用/禁用按钮。
更新:
按照您的要求结算
Edittext
.. 有多种方法可以做到这一点。你可以按照上面的其他答案或者你可以使用我上面的答案,如果它适合你,而不是使用TextWatches
,您可以使用OnFocusChangeListener
. 这是更好的,如果你有多个编辑文本。当你的人Edittext
失去焦点,则此代码将触发以查看它是否匹配regex模式。如果不匹配,则清除它。移除上面的textwatcher,如下所示:实施
OnFocusChangeListener
在你的Activity
```MainActivity extends AppCompatActivity implements View.OnFocusChangeListener
@Override
public void onFocusChange(View view, boolean b) {}
@Override
public void onFocusChange(View view, boolean b) {
if(!b){ // Lost focus
String text = ((EditText)view).getText().toString();
if(text.matches(mRegex)){
// It matches
Toast.makeText(MainActivity.this, "Input matches!!!", Toast.LENGTH_SHORT).show();
}
else{
// No match - clear Edittext
((EditText)view).setText("");
Toast.makeText(MainActivity.this, "Input doesn't match", Toast.LENGTH_SHORT).show();
}
}
}