在 Android 中获取大写锁定状态
Get caps lock state in Android
如何使用硬件键盘在 Android 中获取大写锁定状态?
在纯 Java 中可以用
检测到
boolean isOn = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
但这不适用于 Android...
我认为没有任何 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) {
}
});
试试这个(没有测试):
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);
}
}
你可以在你的editText中使用android:inputType="textCapSentences"
,如果你想做第一个字母,从大写开始。如果您想要一些不同的行为,还有其他选择。
如何使用硬件键盘在 Android 中获取大写锁定状态? 在纯 Java 中可以用
检测到boolean isOn = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
但这不适用于 Android...
我认为没有任何 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) {
}
});
试试这个(没有测试):
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);
}
}
你可以在你的editText中使用android:inputType="textCapSentences"
,如果你想做第一个字母,从大写开始。如果您想要一些不同的行为,还有其他选择。