键盘在空格

时间:2016-08-12 13:34:33

标签: android keyboard android-edittext mask

我输入文本时遇到问题我不希望键盘自动更改,但是在空格键盘更改为原始状态后。
例如,我想拨打我进入键盘状态的数字:enter image description here

但是当我需要输入数字后面跟一个空格时,键盘本身就是自动更改: enter image description here

如果需要输入字符,用户自己可以更改键盘的状态。我在编辑文本的文本上使用了一个掩码。借助此库设置掩码: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); }

有办法解决这个问题吗?

1 个答案:

答案 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)。