Android dispatchKeyEvent不适用于所有KeyEvent代码
我有一个EditText,我尝试从我的Android dispatchKeyEvent不适用于所有KeyEvent代码,android,android-activity,android-softkeyboard,android-keypad,Android,Android Activity,Android Softkeyboard,Android Keypad,我有一个EditText,我尝试从我的活动中调用dispatchKeyEvent,将文本插入EditText,如下所示: public class MainActivity extends AppCompatActivity implements View.OnFocusChangeListener { String TAG = "test"; EditText editText; @Override protected void onCreate(Bundl
活动中调用dispatchKeyEvent
,将文本插入EditText
,如下所示:
public class MainActivity extends AppCompatActivity implements View.OnFocusChangeListener {
String TAG = "test";
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate: ");
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.edittext);
editText.setOnFocusChangeListener(this);
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
Log.d(TAG, "onFocusChange: "+hasFocus);
if(hasFocus) {
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SHIFT_LEFT));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_SHIFT_LEFT));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_L));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_O));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_L));
}
}
}
字母可以正常工作,但shift和capslock的KeyEvents
没有任何作用。上面的代码将“lol”写入EditText
,而不是预期的“lol”。为什么?您可以使用KeyEvent()的另一个构造函数来使用如下移位元数据:
dispatchKeyEvent(new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_L,0,KeyEvent.META_SHIFT_ON));
资料来源:我知道这是可以实现的,但这不是我想要的。