-5

我想在android中创建读取4个字符密码的视图。当用户按下退格键时,我想要关注prev元素。当所选视图为空时,是否有可能捕获退格事件?在Android中创建密码视图

我也想在输入最后一个字符后关闭/隐藏键盘。可能吗?

+0

发布你的一些代码,让我们看看它出错了! – Panther 2014-10-30 13:49:12

+0

嗨豹我更新了代码的问题。即使调用clearFocus();软键盘没有关闭,关于退格键,你可以让我知道我们如何捕获它。 – 2014-10-30 13:58:00

回答

0

我已经覆盖安其& onFocusChange功能和使用ZeroWidthString(“\ u200B”)来捕获软键盘删除事件。以下是代码嗅探

@Override 
public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if(event.getAction() == KeyEvent.ACTION_UP) { 
     TextView tv = (TextView) v; 
     if (keyCode == KeyEvent.KEYCODE_DEL){ 
      if (tv.getText().toString().equalsIgnoreCase(ZeroWidthString)) 
       moveToPrevField(); 
      else 
       tv.setText(ZeroWidthString); 
     } 
    } 
} 

@Override 
public void onFocusChange(View v, boolean hasFocus) { 
    TextView tv = (TextView) v; 
    if (hasFocus) { 
     tv.setText(ZeroWidthString); 
    } 
    else if (tv.getText().toString().equalsIgnoreCase(ZeroWidthString)) { 
     tv.setText(""); 
    } 
} 
0

要捕获backspace,它实际上是android中的删除键。您可以通过

editText.setOnKeyListener(new OnKeyListener() {     
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if(keyCode == KeyEvent.KEYCODE_DEL){ 
      //delete key pressed 
      } 
    return false;  
     } 
}); 

捕捉它隐藏键盘试试这个

InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); 
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);