15

如何使用硬件键盘在 Android 中获取大写锁定状态?在纯 Java 中,它可以被检测到

boolean isOn = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);

但这不适用于Android...

4

3 回答 3

7

试试这个(没有测试):

public class CustomEditText extends EditText{


public CustomEditText(Context context) {
    super(context);
}

public CustomEditText(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomEditText(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(event.isCapsLockOn()){
        //Do what Ever
    }
    return super.onKeyDown(keyCode, event);
}

}

isCapsLockOn

于 2016-03-02T10:35:46.010 回答
2

您可以android:inputType="textCapSentences"在您的 editText 中使用,如果您想制作第一个字母,请以大写字母开头。如果您想要一些不同的行为,还有其他选择。

于 2016-03-02T13:15:34.863 回答
1

我认为没有任何 Android API 可以检测大写锁定状态。但我确实有它的选择。如果您想检测 CAPSLOCK 是打开还是关闭,最好使用TextWatcher.EditText

mEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String character = s.toString();
            /*
            Matche entered character with Rajex wheter its capital or small
             */
            if (Pattern.matches("[a-z]",character)) {
                Log.e("","CapsLock is OFF");
            }
            else if (Pattern.matches("[A-Z]",character)){
                Log.e("", "CapsLock is ON");
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
于 2016-03-02T10:27:23.063 回答