2013-08-14 4 views
10

프로그래밍 방식으로 포커스를 전달하는 EditText가 있습니다. 그러나 내가 할 때, 나는 키보드가 나타나기를 원한다. (그리고 그 EditText가 초점을 잃을 때 내려 간다.) 지금 사용자는 EditText를 클릭하여 키보드가 나타나도록해야합니다. 심지어 EditText에 이미 포커스가 있다고 생각할지라도 말입니다. ,EditText가 포커스를 얻었을 때 나타나는 소프트 키보드

EditText yourEditText= (EditText) findViewById(R.id.yourEditText); 
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT); 

답변

15

이 내가 ketyboard을 표시하는 방법입니다.

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT); 

키보드를 숨기려면 아래 코드를 사용하십시오. 이 도움이

final InputMethodManager imm =(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE); 
editText.setOnFocusChangeListener(new OnFocusChangeListener() { 

     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if(hasFocus){ 
       imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT); 
      }else{ 
       imm.hideSoftInputFromWindow(et.getWindowToken(), 0); 
      } 
      imm.toggleSoftInput(0, 0); 
     } 
    }); 

희망 : 등은 가야가 포커스 청취자를 기반으로 수행하기 위해 글고

InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(getActivity().INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(et.getWindowToken(), 0); 
+9

을 추가합니다. 그러나 먼저 EditText에'requestFocus()'를하고 키보드를 열어야합니다. 반대 순서로는 작동하지 않습니다. @GaborSch 덧글에 대해 +1이 – gaborsch

+1

입니다. 감사. –

6

키보드를 표시하려면 다음 코드를 사용

0

에 대한 참조입니다.

감사합니다. 에

22
<activity android:name=".YourActivity" 
      android:windowSoftInputMode="stateVisible" /> 

당신의 활동을 위해 ...이 파일을 명시하는

+0

이 작품은 고마워요.) 내 상황에서는 하나의 활동이 열릴 때 초점을 맞 춥니 다 (위의 구성은 목록 파일에 없습니다). 동일한 코드와 디자인이 위의 내용을 추가 할 때까지 다른 활동이 위의 사항을 나타냅니다. /. 왜 ı가 그 이유를 이해할 수 없었던 것은 이상했다. –

6

설정이 추가하여 화면이

<activity android:windowSoftInputMode="stateAlwaysVisible" ... /> 

이 손실에 키보드를 숨기려면 글고 상자를 들어 오면 자동으로 키보드를 팝 매니페스트 포커스는 EditText의 OnFocusChangeListener를 설정합니다. 에서 onCreate (에서

)

EditText editText = (EditText) findViewById(R.id.textbox); 
OnFocusChangeListener ofcListener = new MyFocusChangeListener(); 
editText.setOnFocusChangeListener(ofcListener); 

것은이 클래스 이건 정말 작동

private class MyFocusChangeListener implements OnFocusChangeListener { 

    public void onFocusChange(View v, boolean hasFocus){ 

     if(v.getId() == R.id.textbox && !hasFocus) { 

      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(v.getWindowToken(), 0); 

     } 
    } 
} 
관련 문제