我正在尝试创建一个简单的计算器,为用户提供EditText输入数字。
允许输入内容应为[1,2,3,4,5,6,7,8,9,0,.]
我知道可以使用以下代码来限制输入内容
android:digits="1234567890."
android:inputType="phone"
但是如何阻止用户在EditText Box中添加多个点(.
)?
答案 0 :(得分:3)
您可以在EditText中使用InputFilter限制字符:
EditText mEdit = (EditText)findViewById(R.id.mEdit);
InputFilter[] filters = {new AdnNameLengthFilter()};
mEdit.setFilters(filters);
public static class AdnNameLengthFilter implements InputFilter
{
private int nMax;
public CharSequence filter (CharSequence source, int start, int end, Spanned dest, int dstart, int dend)
{
Log.w("Android_12", "source("+start+","+end+")="+source+",dest("+dstart+","+dend+")="+dest);
if(dest.toString()=="."||( source.toString()==".")
{
//DO SOMTHING HERE
}else
{
//DO SOMTHING HERE
}
}
}
第二个选项是TextWatcher,用于按用户查找char输入:
mEditText = (EditText)findViewById(R.id.ET);
mEditText.addTextChangedListener(mTextWatcher);
TextWatcher mTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int arg1, int arg2,
int arg3) {
// YOU STRING BEFORE CHANGE
}
@Override
public void onTextChanged(CharSequence s, int arg1, int arg2,
int arg3) {
// CHARS INPUT BY USER
}
@Override
public void afterTextChanged(Editable s) {
// AFTER TEXT CCHANGE In EDITTEXT BY USER
}
};
答案 1 :(得分:1)
使用TextWatcher检查输入的每个内容,并确定是否允许它进入EditText或忽略。
让自己成为一个并覆盖其方法以实现您想要的任何逻辑。
创建TextWatcher后,将其应用于EditText,如下所示:
edt.addTextChangedListener(mTextWatcher);
答案 2 :(得分:1)
您可以使用此digits属性android:digits="0123456789"