如何在Android键盘上触发shift键?
如何触发Android键盘上的“shift”按钮,以便下一个字符为大写 我将如何在Android键盘上触发shift键?,android,android-softkeyboard,Android,Android Softkeyboard,如何触发Android键盘上的“shift”按钮,以便下一个字符为大写 我将InputType设置为InputType.TYPE_TEXT_FLAG_CAP_句子| InputType.TYPE_TEXT_FLAG_MULTI_行,但如果光标位于行中的任何位置,则此操作不起作用 我试过了。两者都不起作用。第二个线程抛出一个运行时异常(“无法从主应用程序线程调用此方法”)。可能是因为这个按钮没有按键代码。 有办法触发按钮吗?编辑: 似乎像shift和alt这样的按钮会创建影响按下按钮的元状态。发件
InputType
设置为InputType.TYPE_TEXT_FLAG_CAP_句子| InputType.TYPE_TEXT_FLAG_MULTI_行
,但如果光标位于行中的任何位置,则此操作不起作用
我试过了。两者都不起作用。第二个线程抛出一个运行时异常(“无法从主应用程序线程调用此方法”)。可能是因为这个按钮没有按键代码。
有办法触发按钮吗?编辑:
似乎像shift和alt这样的按钮会创建影响按下按钮的元状态。发件人:
元状态描述按键修改器的按下状态,如元移位或元替换
可以使用dispatchKeyEvent
模拟这些元状态,如下所示:
dispatchKeyEvent(new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_L,0,KeyEvent.META_SHIFT_ON));
如果焦点中有一个EditText
,则会在其中写入“L”。但似乎您不能只发送shiftKeyEvent
,而期望下一个字符为大写。也许你可以想出一些解决办法
您正在使用andEditText
,对吗?因为某种原因,我找不到
dispatchKeyEvent(新的KeyEvent(KeyEvent.ACTION\u DOWN,KeyEvent.KEYCODE\u SHIFT\u LEFT))代码>
当编辑文本聚焦时工作,而字母和数字的KeyEvents
工作
一种解决方法是将TextWatcher
添加到EditText
:
editText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
Log.d(TAG, "afterTextChanged: "+s.toString());
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.d(TAG, "beforeTextChanged: "+s.toString());
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d(TAG, "onTextChanged: "+s.toString());
}
});
并检查CharSequence s
的所需字符是否在posterextchanged
中大写。如果不是,则将其更改为大写版本。这是一个有点骇客和不完全回答你的问题,我知道,但不幸的是,我不能评论。谢谢你的回答,没有问题,我也无法在其他线程中评论。现在回答你的问题。是的,我正在使用EditText。那么,是否不可能使用该dispatchKeyEvent?因为现在我什么都没做。变通办法不是我想做的事。但是谷歌如何在他们的谷歌文档编辑器中实现这一点呢?