在Android中创建密码视图

时间:2014-10-30 13:37:00

标签: android textview android-custom-view android-softkeyboard

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

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

我覆盖了onKey& 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("");
    }
}