常規操作是定一個InputFilter,然後給EditText控件添加關聯解決如下:
step1:
// 禁止EditText輸入空格
private InputFilter filter = (source, start, end, dest, dstart, dend) -> {
if (source.equals(" ")) return "";
else return null;
};
step2:
pwdEdt.setFilters(new InputFilter[]{filter});
But,今天遇到個情況這個InputFilter不好使了,找了半天原因是衝突在android:inputType="textPassword"
這個屬性上了,當我的EditText作爲密碼框使用的時候InputFilter不起作用了,只能用笨辦法TextWatcher搞定了,代碼稍微多幾行:
TextWatcher textChanged = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
// 禁止EditText輸入空格
if (charSequence.toString().contains(" ")) {
String[] str = charSequence.toString().split(" ");
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length; i++) {
sb.append(str[i]);
}
pwdEdt.setText(sb.toString());
pwdEdt.setSelection(start);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
};
然後pwdEdt.addTextChangedListener(textChanged);
添加關聯解決。