2014-04-28 4 views
1

키보드를 최소화하자마자 커서를 숨기고 다른 작업을하고 싶습니다. editext를 터치 할 때 이미 커서를 활성화하고 키보드를 표시하지만 '완료'를 누르지 않고 사용자가 최소화 한 경우를 알 수있는 방법을 찾을 수 없습니다.키보드가 최소화 된시기를 아는 방법?

할 방법이 있습니까? 코드 아래

답변

0

시도 : -

activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(
      new OnGlobalLayoutListener() { 
       @Override 
       public void onGlobalLayout() { 
        Rect r = new Rect(); 
        activityRootView.getWindowVisibleDisplayFrame(r); 

        int heightDiff = activityRootView.getRootView() 
          .getHeight() - (r.bottom - r.top); 
        if (lastDiff == heightDiff) 
         return; 
        lastDiff = heightDiff; 
        Log.i("aerfin","arefin "+lastDiff); 
        if (heightDiff > 100) { // if more than 100 pixels, its 
              // probably a keyboard... 
         flag2 = 0; 
        } else { 
         if (flag == false) 
          flag2 = 1; 
        } 
       } 
      }); 

대한 추가 정보는 아래 링크를 참조 적어도 나를 위해 전체 사용 -

Maintain keyboard open/closed state for EditText when app comes to foreground

매니페스트에서

How to check visibility of software keyboard in Android?

+0

고마워! 나는 두 번째 링크의 이후 답변 중 하나에서 가져온 이와 비슷한 버전을 사용하여 끝냈습니다. 설정이 필요한 EditText가 레이아웃 구조 깊숙이 묻혀 있으므로 사다리로 이벤트를 전달해야하지만 작동 할 것입니다. – yedidyak

-1
InputMethodManager imm = (InputMethodManager)getSystemService(
     Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 

//to show soft keyboard 
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 

//to hide it, call the method again 
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
+1

그가 물었던 것이 아닙니다. 코드가 키보드를 표시하거나 숨기거나 사용자가 키보드를 수동으로 표시하거나 숨길 때 콜백을 원합니다. –

+0

좋아 .... 이제 알았어 ... Thnx Brother –

0

만들 키보드가 퍼팅으로 표시되거나 숨겨지면 구성이 변경되는지 확인하십시오. g 매니페스트에 <activity> 태그의 인수로이 라인 :

android:configChanges="orientation|keyboardHidden" 

이 그런 다음 Activity에서이 메소드를 오버라이드 (override).

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks whether a hardware keyboard is available 
    if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) { 
     Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) { 
     Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

이것은 softKeyboard에 대해 호출되지 않는 것 같습니다 :( – yedidyak