2017-12-03 9 views
0

alertDialog 안에 editText가 있습니다. alertDialog 바깥을 클릭하면 닫힙니다. 그러나 키보드는 해산되지 않습니다. 포커스 변경 리스너가 edittext에 포커스가 없으면 키보드를 닫을 때 텍스트를 편집하도록 설정했습니다.경고 대화 상자가 닫히기 전에 SoftInputKeyboard를 닫는 방법

public void onFocusChange(View v, boolean hasFocus) { 
     if (hasFocus) { 
      setClearIconVisible(isNotEmpty(getText())); 
      mInputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
     } else { 
      setClearIconVisible(false); 
      mInputMethodManager.hideSoftInputFromWindow(this.getWindowToken(), 0); 
     } 
    } 

하지만 대화 상자를 탭하여 닫으면됩니다. onFocusChange의 다른 부분에있는 코드는 히트하지 않습니다. 누군가 도와 줄 수 있습니까?

답변

0

대화 상자가

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
alertDialogBuilder.setOnCancelListener(new DialogInterface.OnCancelListener() { 
    @Override 
    public void onCancel(DialogInterface dialog) { 
     // hide softkeyboard 
    } 
}) 
+0

내가 그 일을 시도해 봤어을 취소 할 때으로 onCancel 리스너를 설정할 수 있습니다. onCancel, mEditText.clearFocus()를 수행하고 있습니다. mInputMethodManager.hideSoftInputFromWindow (this.getWindowToken(), 0)를 차례로 호출합니다. 하지만 나는 alertDialog가 해제되면 editText가 보이지 않으므로 키보드를 숨기지 않는다고 생각합니다. – user2991413

+0

키보드 숨기기는 다소 까다 롭습니다. 키보드를 숨기려면 어떤 방법을 사용합니까? 이게 도움이 되나요? - https://gist.github.com/yccheok/cf4da9f2e0fa1b1d329d3f72d727696b –