-5

4 자의 패스 코드를 읽는 안드로이드 뷰를 만들고 싶습니다. 사용자가 백 스페이스를 누를 때 이전 요소에 초점을 맞추고 싶습니다. 선택한 뷰가 비어있을 때 백 스페이스 이벤트를 캡처 할 수 있습니까?Android에서 패스 코드보기 만들기

또한 마지막 문자를 입력 한 후 키보드를 닫거나 숨기려고합니다. 가능한가?

+0

일부 코드는 게시하고 어디에서 잘못 될지 보도록하십시오! – Panther

+0

안녕 팬더 난 코드와 함께 질문을 업데이 트했습니다. clearFocus()를 호출 할 때조차도; 소프트 키보드가 닫혀 있지 않고 백 스페이스에 관해서는 어떻게 캡처 할 수 있는지 알려주세요. –

답변

0

시도 숨기려면

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

통해 캡처 할 수 있습니다. 다음은 코드 스 니프입니다.

@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에서 삭제 키를 누릅니다. 당신은 키보드가 나는 onKey에게 & onFocusChange 기능을 덮어 및 소프트 키보드에서 이벤트를 삭제 캡처 ZeroWidthString ("\ u200B")를 사용하고이

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