android监听输入空格键,数字输入字段上的空格键事件行为?

所以看起来你的问题与你的EditText的’input’types没有关系,而是来自键盘的按键事件….

所以’希望’这应该可以解决你的问题(通过”跳过’来自’空格’按钮的’下一个’事件。)

// do for both EditText(s) editText1.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { log.d("main","KeyPress:"+ actionID); if (event != null ) { log.d("main","KeyPress:" + event.getKeyCode() ); } if ( actionId == EditorInfo.IME_ACTION_NEXT) { // do 'nothing' or 'add a space' if you want that return true; } return false; } });

这可能发生了什么(没有你的XML很难说)

所以我find了一些可以帮助你找出模式的东西+可能导致解决它…来自https://stackoverflow.com/a/17990096

如果你的XML中有一个android:nextFocus....设置(或代码中的等价物)和/或物理键盘’space’也发信号IME_ACTION_NEXT (或其他类似的IME动作)

如果EditorInfo.IME_ACTION_NEXT不是导致您出现问题的IME操作,那么您可以尝试这个…来确定是什么。

来自: https : //stackoverflow.com/a/4171427

如果你有PHYSICAL键盘,你可以用来检测keyDown事件并适当地处理它们,

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { log.d("main","KeyPress:" + keyCode); if (event != null ) { log.d("main","KeyPress:" + event.getKeyCode() ); } // if you want to 'handle' the keyPess here, best to use switch like below // switch (keyCode) { // case KeyEvent.KEYCODE_A: // { // //your Action code // return true; // } /// } return super.onKeyDown(keyCode, event); }

但是……如果你有软件键盘你需要使用addTextChangedListener / TextWatcher因为物理键按下是由EditText“吃掉”(从我在另一篇文章中看到的,但我的测试似乎是正确的。)

mMyEditText.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { } public void beforeTextChanged(CharSequence s, int start, int count, int after) { /*This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after. It is an error to attempt to make changes to s from this callback.*/ } public void onTextChanged(CharSequence s, int start, int before, int count) { } );

您可以覆盖输入“空格”时EditText执行的操作。

在“软件键盘”中这似乎很容易,但物理键盘似乎有点困难。

类似于这个问题(但是’space’而不是’enter’) Android – 在EditText中处理“Enter”

这可以帮助您确定要更改的焦点的“模式”。 如果它是随机的或非随机的(最可能是随机的,但可能是“有趣的”调查)

// try this to see View.OnFocusChangeListener changeListener = new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { log.d("YourClassName", "FocusChanged" + hasFocus) } }; EditText1.setOnFocusChangeListener(changeListener); EditText2.setOnFocusChangeListener(changeListener); Button.setOnFocusChangeListener(changeListener); // ... etc... (add to views to see if there is pattern)

你可能感兴趣的:(android监听输入空格键)