此问题与此处已经提到的所有其他问题不同。
我希望大写锁定启用,就像打开键盘时双击(或长按)shift键一样。 另一个要求是,如果用户按下shift键,则必须禁用大写锁定。
我已经在stackoverflow中尝试过大多数提议的解决方案,例如 android:inputType =“textCapCharacters”或 setAllCaps(true)但是会发生的事情是大写锁定可以禁用。使用上述解决方案,按下shift后,用户将以小写形式插入一个单个字符,然后系统自动将键盘设置为大写锁定。
这不是我想要的正确方法,我只希望在用户第一次打开keybaoard时启用大写字母,然后他将自己处理大写状态。
请记住,我开始提问“就像我双击(或长按)shift键”,因为使用inputType解决方案你有这种情况:
CMD
如果我手动启用大写锁定,那就没有白色大写字样突破:
答案 0 :(得分:-1)
我找到了问题的解决方案!
我必须继续使用 android:inputType =“textCapCharacters”但是当用户按下shift键并输入小写的单个字符时,textwatcher会删除标记 textCapCharacters
按照文字执行者的说法:
public class EditTextWatcher implements TextWatcher{
private EditText editText;
public PtlEditTextWatcher(EditText editText) {
this.editText = editText;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override
public void afterTextChanged(Editable s) {
if (editText != null && s.length() > 0 && (editText.getInputType() & InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS) > 0)
if (Character.isLowerCase(s.toString().charAt(s.length() - 1)))
editText.setInputType(editText.getInputType() & ~InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
}
}
简单使用它是:
addTextChangedListener(new EditTextWatcher(myEditText));