我输入文本时遇到问题我不希望键盘自动更改,但是在空格键盘更改为原始状态后。
例如,我想拨打我进入键盘状态的数字:
但是当我需要输入数字后面跟一个空格时,键盘本身就是自动更改:
如果需要输入字符,用户自己可以更改键盘的状态。我在编辑文本的文本上使用了一个掩码。借助此库设置掩码:MaskFormatter。面具的一个例子:
private static final String MASK = "99 AA 999999";
private EditText mInputCertificate;
@Override
public void setViews(View rootView, Bundle savedInstanceState) {
// Some code
mInputCertificate = (EditText) rootView.findViewById(R.id.input_car_certificate);
MaskFormatter maskFormatter = new MaskFormatter(MASK, mInputCertificate);
mInputCertificate.addTextChangedListener(maskFormatter);
}
有办法解决这个问题吗?
答案 0 :(得分:0)
我为EditText创建了自定义TextWatcher:
private String getString (String s) {
String newValue = s.replaceAll("\\s", "");
/*if (newValue.length() < 2 || newValue.length() >= 4) {
mEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
} else {
mEditText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
}*/
StringBuilder builder = new StringBuilder();
for (int i =0; i < newValue.length(); i++) {
if (i == 2 || i == 4) {
builder.append(' ');
builder.append(newValue.charAt(i));
} else {
builder.append(newValue.charAt(i));
}
}
return builder.toString();
}
@Override
public void afterTextChanged(Editable s) {
Log.d("EDITTEXT", "getEditable " + s);
String text = getString(s.toString());
mEditText.removeTextChangedListener(this);
mEditText.getText().clear();
mEditText.append(text.toUpperCase());
mEditText.addTextChangedListener(this);
mEditText.setSelection(mEditText.length());
}
这项工作对我而言。我使用.append(SomeText)代替.setText(SomeText)。